performance - 发送两个后续 HTTP 请求的最快方法是什么?
问题描述
我正在制作一个“用户名交换器”脚本,它将我的用户名从一个在线帐户交换到另一个帐户,并尽可能减少延迟。第一个 POST 请求释放一个帐户的用户名,随后的 POST 请求获取另一个帐户的用户名。
如果有任何延迟或事故,即使是一秒钟,许多机器人之一(称为“用户名自动声明器”)都会从我这里抢走用户名。Instagram 和 Twitter 等网站上有许多此类机器人,其中罕见的用户名被认为是有价值的并且具有很高的货币价值。
我想到了几种优化请求速度的方法:
- 为两个会话重复使用相同的 TCP 连接
- (也许?)使用较低级别的库(例如套接字)以提高速度
- 在网络服务器位置旁边的低延迟服务器上运行脚本
- 等待网络服务器维护或其他东西,直到机器人崩溃
- 如果网站不需要更高速度,请使用 HTTP over HTTPS
有什么显着的方法可以提高速度,还是我已经把大部分速度都降下来了?我不确定的一件事是语言。像 C++ 这样的低级语言在 Python 上是否会在性能上有所不同?
解决方案
主要的性能成本是由于网络的延迟和服务器实际需要处理请求的时间(即数据库查找......)。在这种情况下,由于选择编程语言或库而产生的成本大多无关紧要。
网络的主要成本是 TCP 握手和(使用 HTTPS)以下 TLS 握手。如果第二个请求重用相同的底层 TCP 连接,则可以消除这些 - 但当然服务器实际上需要支持这一点。
服务器处理请求所需的时间不受客户端的控制。除此之外,可能还有其他问题,例如服务器要求客户端在检测到某种自动化时解决验证码,或者有适当的程序可以快速重用用户名,以打击销售等滥用行为用户名等
推荐阅读
- mysql - MySQL:使用两个匹配的列将数据从一列更新到另一列
- python - 从文本中删除所有无效字符(例如 \uf0b7)
- python - 如何将值从html传递到python
- ms-access - 如何显示报告中的数字
- regex - Watson Assistant:提取模式实体值的问题
- machine-learning - 训练模型以判断它是否是实际的信用卡/驾驶执照与屏幕上的图像/影印件等
- azure - Azure 搜索中的 zip 文件提取有哪些限制?
- xml - 覆盖 one2many 关系中字段的“只读”属性
- apache-kafka - 下载 Kafka 或 confluent 平台打包分发 CDH 5.16
- c# - 从代码定义列时 DataGridView.DataSource 不起作用