我是 celery 的新手,可能做错了什么,但我已经花了很多时间试图弄清楚如何正确配置 celery。
因此,在我的环境中,我有 2 台远程服务器;一个是主要的(它有公共 IP 地址和数据库服务器、rabbitmq 服务器和运行我的 Web 应用程序的 Web 服务器等大部分东西都在那里),另一个用于我想使用 celery 从主服务器异步调用的特定任务。
我打算使用 RabbitMQ 作为代理和结果后端。Celery 配置非常基本:
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卡住了,无法执行任何任务。当我重新启动工作人员时,它会执行更多任务并再次卡住。任务内部没有什么特别之处,我什至尝试了一个只添加 2 个数字的测试任务。我尝试以不同的方式运行worker(妖魔化而不是妖魔化,设置不同的并发性并使用celeryd_multi),没有任何帮助。
可能是什么原因?我错过了什么?除了代理(RabbitMQ)之外,我是否必须在主服务器上运行某些东西?或者它是芹菜中的一个错误(我尝试了几个版本:2.2.4、2.3.3 和 dev,但都没有工作)?
嗯...我刚刚在本地工作人员上重现了同样的问题,所以我真的不知道它是什么......是否需要在每执行 N 个任务后重新启动 celery 工作人员?
任何帮助将不胜感激:)