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

问题描述 投票:1回答:2

我是新来的芹菜,可以做一些错误,但我已经花了很多试图找出如何正确配置芹菜。

所以,在我的环境我有2个远程服务器;一个是主(有公网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" 

当我运行在主服务器任务的工人被执行得很好,但是当我运行它只有几个任务执行的远程服务器上,然后工人被卡住,以执行任何任务不能够。当我重新启动工人在执行完成一些任务,并再次被卡住。没有什么特别的任务里面,我甚至尝试了测试任务,它只是增加了2个数字。我试着以不同的方式运行工人(妖魔化,而不是,设置不同的并发和使用celeryd_multi),没有什么帮助。

可能是什么原因?我错过了什么?我必须运行在主服务器上的其他东西比代理(RabbitMQ的)?或者是它在芹菜(我试过几个版本:2.2.4,2.3.3和开发,但没有一次成功)的错误吗?

嗯......我只是转载的本地工人同样的问题,所以我真的不知道它是什么...是每N个任务执行后重新启动芹菜工人要求?

任何帮助将是非常赞赏:)

rabbitmq celery amqp django-celery celeryd
2个回答
1
投票

不知道你最终解决问题,但我有类似的症状。原来,(无论何种原因)打印对账单的任务范围内是导致任务无法完成(也许某种僵局的情况?)。只有一些任务有打印报表,所以当这些任务最终执行人员(由并发选项设置)的数量都耗尽,造成任务停止执行。


0
投票

尽量把芹菜的配置设置

CELERYD_PREFETCH_MULTIPLIER = 1
CELERYD_MAX_TASKS_PER_CHILD = 1

docs

© www.soinside.com 2019 - 2024. All rights reserved.