gpt4 book ai didi

python - 为第三方 HTTP 调用优化 Celery

转载 作者:太空狗 更新时间:2023-10-29 20:27:16 24 4
gpt4 key购买 nike

我们正在使用 celery 进行第三方 http 调用。我们有大约 100 多个简单地调用第三方 HTTP API 调用的任务。有些任务会批量调用 API,例如凌晨 4 点发出 50 万个请求,而有些任务是连续的 API 调用流,几乎每秒接收一次或两次请求。

大多数 API 调用响应时间在 500 - 800 毫秒之间。

我们发现 celery 的交货速度非常慢。对于上述大多数任务,最大交付率在 100/s(最大)到接近 1/s(最小)之间。我相信这很糟糕,肯定有问题,但我无法弄清楚它是什么。

我们从 3 台服务器的集群开始,逐渐将其变成 7 台服务器的集群,但没有任何改进。我们尝试了不同的并发设置,从自动缩放到固定的 10、20、50、100 个工作人员。没有结果后端,我们的代理是 RabbitMQ。

由于我们的任务执行时间非常短,大​​多数情况下不到一秒,我们还尝试将预取计数限制为各种值。

--time-limit=1800 --maxtasksperchild=1000 -Ofair -c 64 --config=celeryconfig_production

服务器是64G内存,Centos 6.6。

您能否告诉我可能出现的问题或解决方法的建议?

我们应该使用 gevents 吗?虽然我不知道它是什么。

最佳答案

首先 - GIL - 不应该是这种情况,因为更多的机器应该运行得更快。但是 - 请检查负载是否只在服务器的一个核心上......

我不确定整个 Celery 是否适合您的情况。这是一款很棒的软件,具有很多功能。但是,如果不需要,最好使用更简单的东西——以防某些功能干扰。我会编写小型 PoC,检查其他客户端软件,例如 pika。如果那没有帮助 - 问题出在基础设施上。如果有帮助 - 你有解决方案。 :)

真的很难说这是怎么回事。它可能与 IO 有关,或者网络调用太多……我会退后一步 - 找出有用的东西。编写集成测试,但一定要使用 2-3 台机器来使用完整的 tcp 堆栈。一定要有 CI,每天大约运行一次该测试 - 看看事情是否朝着正确的方向发展。

关于python - 为第三方 HTTP 调用优化 Celery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36106216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com