gpt4 book ai didi

django - 将 gevent(或 eventlet)和 prefork worker 与 Celery 一起使用

转载 作者:行者123 更新时间:2023-12-04 20:01:37 26 4
gpt4 key购买 nike

在 Celery 文档的并发部分中,它指出:

...mix of both Eventlet and prefork workers, and route tasks according to compatibility or what works best



来源: http://celery.readthedocs.org/en/latest/userguide/concurrency/eventlet.html#concurrency-eventlet

这意味着可以让一个 worker 使用 gevent/eventlet 池实现,而另一个使用 prefork 池。

使用 celery multi 创建多个 worker 时可以指定池实现:
celery -A proj multi start 2 -P gevent -c 1000

这将启动 2 个 gevent 工作人员,但是在使用 celery multi 时,如何在每个工作人员的基础上指定池实现,以便一个 worker 使用 gevent 池,而另一个 worker 使用 prefork?
celery multi文档没有提及有关此特定问题的任何内容,并且源代码( celery.bin.multi )并未真正表明这是可能的(除非我误读/误解了代码)。

最佳答案

因此,目前指定每个 worker Pool 实现的唯一方法是运行独立的 celery worker命令:

$ celery -A proj worker start -P gevent -Q:queue1 -c 500
$ celery -A proj worker start -P prefork -Q:queue2 -c 4
celery multi不支持 -P:worker1 gevent, -P:worker2 prefork .这在使用 Celery 中提供的 init.d 脚本时变得困难 docs守护 celeryd。所以你要么修改 init.d 脚本,要么使用类似 Supervisor 的东西。

关于django - 将 gevent(或 eventlet)和 prefork worker 与 Celery 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152712/

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