performance - Python 请求 - 批量 API 调用
问题描述
我正在开发一个 API 来将记录从数据库推送到端点。
我已经设法编写了一段代码来获取记录,它正在解析它们并最终推送到 API 并且工作得很好。
它设法推动大约 400 个请求/分钟,我想知道我是否可以批量处理这些请求以使其性能更高一些,但我无法理解如何实现这一点。
API 调用 url 为:
http://call-url.com/service/ {id}
考虑 id 的有效载荷:
id = 101
{
"stars":3
"position":5
"date":"2002-04-30T10:00:00+00:00"
}
url = http://call-url.com/service/101
我正在使用 python 和 requests 模块来推送记录。
正如我们所说,我正在为每个单独的 id 抓取记录并解析负载并推送它们。
到目前为止,我遇到了异步和线程,但我需要确保我不会两次推送相同的请求。
是否可以一次推送超过 1 条记录?
谢谢,
解决方案
您可以使用任何 AMQP 消息代理。以 RabbitMQ 为例。这个概念很简单,只需查看教程。将您的脚本拆分为main.py
(读取数据库、准备有效负载并将它们推送到队列)和worker.py
(从队列中获取有效负载并发送到 API),然后worker.py
根据需要生成尽可能多的进程......
推荐阅读
- ruby-on-rails - 如何使用 rspec 为通知消息编写测试用例
- ios - 如何在 soundcloud 登录/注册页面中更改我的应用名称?
- react-native - 如何通过数组循环单选按钮
- validation - 在 ruby on rails 中重置密码表单验证
- ios - tintColor 未在主题中更新为默认值
- javascript - THREE.JS - 使用 OrbitControls 时锁定 y 轴旋转
- rust - 是否可以让 Future::and_then 有条件地返回不同的期货?
- c# - 基于 light.enabled 控制运动。C#
- selenium-webdriver - 无法找到元素,这是要删除 Salesforce 闪电中的对象
- web-scraping - 如何在 Scrapy 中提取所有请求标头?