Rabbitmq 如何正确配置和运行远程芹菜工人?

Rabbitmq 如何正确配置和运行远程芹菜工人?,rabbitmq,celery,amqp,django-celery,celeryd,Rabbitmq,Celery,Amqp,Django Celery,Celeryd,我对芹菜不熟悉,可能做错了什么,但我已经做了 花了很多时间试图弄清楚如何配置芹菜 没错 因此,在我的环境中,我有两个远程服务器;一个是main(它有 公共IP地址和大多数东西,如数据库服务器,rabbitmq 运行我的web应用程序的服务器和web服务器在那里)和另一个 用于我希望从中异步调用的特定任务 主服务器使用芹菜 我计划使用RabbitMQ作为代理和结果后端。 芹菜配置非常基本: CELERY_IMPORTS = ("main.tasks", ) BROKER_HOST = "Publ

我对芹菜不熟悉,可能做错了什么,但我已经做了 花了很多时间试图弄清楚如何配置芹菜 没错

因此,在我的环境中,我有两个远程服务器;一个是main(它有 公共IP地址和大多数东西,如数据库服务器,rabbitmq 运行我的web应用程序的服务器和web服务器在那里)和另一个 用于我希望从中异步调用的特定任务 主服务器使用芹菜

我计划使用RabbitMQ作为代理和结果后端。 芹菜配置非常基本:

CELERY_IMPORTS = ("main.tasks", ) 
BROKER_HOST = "Public IP of my main server" 
BROKER_PORT = 5672 
BROKER_USER = "guest" 
BROKER_PASSWORD = "guest" 
BROKER_VHOST = "/" 
CELERY_RESULT_BACKEND = "amqp" 
当我在主服务器上运行worker时,任务只是执行而已 很好,但是当我在远程服务器上运行它时,只有几个任务 被执行,然后工人陷入无法执行的状态 任务当我重新启动worker时,它会执行更多的任务,并且 又卡住了。任务中没有什么特别之处,我甚至尝试过 仅添加两个数字的测试任务。我试着管理工人 不同(妖魔化和非妖魔化,设置不同的并发和 使用celeryd_multi),没有什么真正的帮助

原因可能是什么?我错过什么了吗?我必须跑吗 主服务器上除代理(RabbitMQ)之外的其他内容?或者是 它是芹菜中的一个bug(我尝试了一些版本:2.2.4、2.3.3和dev, 但没有一个成功了

嗯。。。我刚刚在当地工人身上重现了同样的问题,所以我 我真的不知道这是什么。。。需要重启芹菜吗 每N个任务执行一次后的工人


非常感谢您的帮助:)

不知道您是否最终解决了问题,但我也有类似的症状。结果表明(无论出于何种原因)任务中的print语句导致任务无法完成(可能是某种死锁情况?)。只有一些任务有打印语句,因此当这些任务最终执行时,工作人员的数量(由并发选项设置)都已耗尽,这导致任务停止执行。

不知道您是否最终解决了问题,但我有类似的症状。结果表明(无论出于何种原因)任务中的print语句导致任务无法完成(可能是某种死锁情况?)。只有一些任务有打印语句,因此当这些任务最终执行时,工作进程数(按并发选项设置)都已耗尽,这导致任务停止执行。

尝试将芹菜配置设置为

CELERYD_PREFETCH_MULTIPLIER = 1
CELERYD_MAX_TASKS_PER_CHILD = 1

尝试将芹菜配置设置为

CELERYD_PREFETCH_MULTIPLIER = 1
CELERYD_MAX_TASKS_PER_CHILD = 1