gpt4 book ai didi

python - 我应该在 celery 中使用 prefork、eventlet 或 gevent 哪个池类?

转载 作者:太空狗 更新时间:2023-10-30 02:02:15 28 4
gpt4 key购买 nike

我有 3 个远程工作人员,每个工作人员都使用默认池(prefork)和单个任务运行。

单个任务需要 2 到 5 分钟才能完成,因为它在许多不同的工具上运行并在 ELK 中插入数据库。

worker 命令:celery -A project worker -l info

我应该使用哪个池类来加快处理速度?

还有其他方法可以提高性能吗?

最佳答案

这个问题滚动过去很有趣。

我们刚刚从 eventlet 切换到 gevent。 Eventlet 导致代理连接挂起,最终使工作人员停滞不前。

一般提示:

  • 如果您受 I/O 限制,请使用更高的并发,我将从 25 开始,检查 CPU 负载并从那里进行调整,目标是该进程的 CPU 使用率达到 99.9%。
  • 如果您的员工队伍增长,您可能希望使用 --without-gossip 和 --without-mingle。
  • 不要使用 RabbitMQ 作为结果后端(redis ftw!),但是当涉及到代理时,RabbitMQ 是我们的首选(redis 上的 amqp 仿真和 celery 的 hacky async-redis 解决方案很臭并导致我们过去有很多悲伤)。

调整 celery worker 的更多高级选项:

  • 将每个工作进程固定到一个核心,以避免移动进程的开销(任务集是你的 friend )
  • 如果一个 worker 不总是工作,考虑与一两个其他进程共享核心,如果一个进程有优先权,则使用 nice

关于python - 我应该在 celery 中使用 prefork、eventlet 或 gevent 哪个池类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42948547/

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