Go并发异步请求秀动抢票

2023-11-19

继上次python请求秀动接口,这次我将采用性能最佳的Go语言重构,(tips:因分享了太多人,有人以此向外获利,所以停止分享)

之前采用python异步请求,三次请求购票接口的思路。鉴于秀动app的防护措施愈来愈强,我将采用发挥go语言的协程的最大功效。

(1)思路1:

通过第一个协程请求第一个api,请求完之后,得到的response通过chan管道到协程并发的second api,与之前不同的是第二个api接口的请求有着多个协程的并发任务,一旦第二个协程得到这个任务,立马执行,执行完之后,通过chan2管道传到第三个api接口中的并发任务。这样就避免了I/O堵塞的问题。

但是在第二个接口如何知道第一个接口已经执行完,第二个接口已经执行完返回的response能够在短时间内被利用呢?毫无疑问,设置监控器。这里就用到了chatgpt给我的回复:

chatgpt提供的办法是通过select的方法,进行实时的监控第一个协程是否已经执行完,已经有数据到了管道,因此用到这个方法,我们可以进行实战,其也是可以进行的,但是其会出现资源的损耗,在堵塞过程中,其进行的是条件的筛选。

因此进行第二个思路的思考。

(2)思路二:因为无限个协程并发始终会造成资源消耗和死锁的情况。

因此我们需要控制协程的并发数:

统计协程的个数,最终控制并发量,达到一种程序的效率的最大值,测试得到在协程数控制在20时,我们的系统资源会被完全利用,并且并发的出现的堵塞情况也会减少。

于是基于此,我将采用该方式进行代码的编写。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

(1)因为go语言需要包的支撑,按照go语言的规范,第一步数据模型定义

(2)爬虫当然少不了代理

(3)直接请求三大接口

(4)展示数据模型:

因为在我的上一个文章中已经讲了如何去请求接口及相关方法,这里就不再重复,仅提供用go语言实现最大的效率请求接口的方式。

拿最近的《城市客厅》南京场次做测试:

可以看到能够稳定拿下。返回的数据为:

好了,大功告成。

有任何问题可联系我,(以上代码及分析均为本人原创)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go并发异步请求秀动抢票 的相关文章

  • 逆波兰表达式求值(C语言实现)

    实验项目 从文本文件输入任意一个语法正确的 中缀 表达式 显示并保存该表达式 利用栈结构 把上述 中缀 表达式转换成后缀表达式 并显示栈的状态变化过程和所得到的后缀表达式 利用栈结构 对上述后缀表达式进行求值 并显示栈的状态变化过程和最终结
  • 【mcuclub】数据存储AT24C02

    一 实物图 二 原理图 编号 名称 功能 1 A0 地址输入 A2 A1和A0是器件地址输入引脚 24C02 32 64使用A2 A1和AO输入引脚作为硬件地址 总线上可同时级联8个24C02 32 64器件 24C04使用A2和A1输入引
  • 身体语言密码

    本书来自www bookdown com cn免费txt小说下载站 更多更新免费电子书请关注www bookdown com cn 掀起职场白领流行新风尚 身体语言密码 全文 一个无心的眼神 一个不经意的微笑 一个细微的小动作 就可能决定了

随机推荐

  • CentOS 8部署Gitlab

    Gitlab简单部署 1 环境和准备工作 操作系统 CentOS6 或者7 8测试都是没有问题的 IP地址 192 168 106 129 配置 2核 最少4G 2 建立git用户 useradd git passwd git passwd
  • python摔倒检测,跌倒检测openpose站立行为检测

    python摔倒检测 跌倒检测openpose站立行为检测 import cv2 import numpy as np from torch import from numpy jit from modules keypoints impo
  • 利用fsck修复/dev/mapper/VolGroup-lv_root: unexpected inconsistency; run fsck manually

    fsck file system check 用来检查和维护不一致的文件系统 若系统掉电或磁盘发生问题 可利用fsck命令对文件系统进行检查 如果系统启动的时候提示 dev mapper VolGroup lv root unexpecte
  • 【已解决】mysql报错error: Found option without preceding group in config file: D:\mysql-5.7.25-win32\my.ini

    之前mysql数据库出现问题 因此卸载重安顺便写个教程 顺便给大家一个小建议 如果软件出现什么莫名其妙的错误 半个小时都没有解决 不如直接重装 因为你不知道哪里出了问题 重装比找出问题简单多了 mysql从官网下载安装包直接解压即可 注意最
  • MySQL - 新增数据时想要得到新增数据的自增ID,怎么办???

    我们在实际逻辑编写时 往往会有 想要使用我们刚刚插入数据的自增ID 来做另外一件事情 这时候我们是可以通过查询刚才插入数据的某个字段作为条件 来查出这条数据的ID 但是总感觉太麻烦效率不高 当然 我们通过SQL层面也是有类似的办法 例如 S
  • Spring有哪些注入方式呢?

    转自 Spring有哪些注入方式呢 下文笔者讲述Spring注入方式分享 如下所示 Spring中有以下注入方式 1 setter属性注入 2 构造方法注入 3 lombok注入 例 1 setter属性注入 Controller publ
  • SLAM练习题(十一)—— G2O实战

    SLAM 学习笔记 写在前面的话 算是一点小小的感悟吧 估计位姿的方法有线性方法和非线性方法 线性方法就是特征点法中的2D 2D的对极约束 3D 2D的PnP问题 非线性方法有BA优化 它将位姿的估计问题转换成了一个误差关于优化量的最小二乘
  • SpringMVC关于get请求传参的问题

    在SpringMVC中 请求GetMapping注解的控制器方法 传参数时 如果直接使用get传递一个body参数过去 后端是不能正确接收的 这儿有一个篇为什么get请求不能正确接收body的解释 HTTP GET 请求可以有 body 吗
  • ROS通信机制~服务通信(server&client)·笔记3

    系列文章目录 ROS开发 ubuntu 笔记 1 嘻 嘻的博客 CSDN博客 ROS通信机制 话题通信 Publisher Subscriber 笔记2 嘻 嘻的博客 CSDN博客 服务通信 概念 以请求响应的方式实现不同节点之间数据交互的
  • MySQL基本SQL语句2(DML)

    目录 前言 一 添加数据 INSERT 1 给指定的字段添加数据 2 给所有的字段添加数据 3 添加多条数据 二 修改数据 UPDATE 修改数据语法 三 删除数据 DELETE 删除数据语法 总结 前言 DML英文全称是Data Mani
  • vue导出Excel和包含echarts的页面导出pdf

    目录 Vue用Export2Excel导出excel单表头和多表头 vue json excel插件实现导出 前端将Blob流文件转为文件导出 vue 导出HTML页面 包含echarts 为PDF Vue用Export2Excel导出ex
  • vmware fusion个人版

    个人免费版虚拟机 不要访问中文网站 以下链接都是英文网站 如果之前将该网站的国家设置成中国 请将其设置回美国后再打开链接 首先注册VMware Fusion Player 账号 并激活 https my vmware com web vmw
  • 目录以及目录下的重要文件

    第1章 mv mv move 移动 remove 移除 类似于windows的剪切 语法格式 mv 参数选项 源文件 目标文件 mv 源文件 新的文件名 root oldboyedu lnb 移动 oldboy下的oldboy txt文件
  • css line-height

    项目中看到 line height 1 所以来总结一下 line height 属性 line height 定义 line height 属性设置行间的距离 行高 line height 不允许使用负值 属性可能的值 值 描述 norma
  • RT-Thread操作系统 AT组件源码分析(以 EC20 为例)

    文章目录 1 AT 组件 1 1 AT 组件调试信息级别设置 1 2 AT 命令打印使能设置 1 3 GPRS 网络注册状态检查 1 4 EC200x 是否能连接外网日志输出 1 5 AT 设备注册过程 1 6 AT 设备类注册过程 1 7
  • win10java jdk安装

    配置环境变量 右击我的电脑 属性 点击Path 新建 添加最后两行到自己的Path环境中 转载链接 https www cnblogs com suni p 8279672 html
  • 求二叉树中两个指定节点的最短距离

    给定一个二叉树 找到该树中两个指定节点间的最短距离 思路 求最近公共祖先节点 然后再求最近公共祖先节点到两个指定节点的路径 再求两个节点的路径之和 const shortestDistance function root p q let l
  • Vue练习题(带解析)

    Vue基础入门 一 填空题 Vue是一套构建 用户界面 的渐进式框架 MVVM主要包含3个部分 分别是Model View和 ViewModel Vue中通过 refs 属性获取相应DOM元素 在进行Vue调试时 通常使用 vue devt
  • Qt实现隐藏按钮功能

    在Qt design界面中添加pushbutton 按钮 选中pushbutton 在右下角有按钮属性相关的修改内容 选中flat 按钮外围边框已消失 此时还差一步 需要修改一下 找到stylesheet 输入以下内容 输入 backgro
  • Go并发异步请求秀动抢票

    继上次python请求秀动接口 这次我将采用性能最佳的Go语言重构 tips 因分享了太多人 有人以此向外获利 所以停止分享 之前采用python异步请求 三次请求购票接口的思路 鉴于秀动app的防护措施愈来愈强 我将采用发挥go语言的协程