我的Python Flask应用程序支持一些长时间运行的任务,这些任务使用API或来自其他系统的CURL调用来调用。
当我通过手动将以下命令输入终端来执行时,它的工作效果非常好。
celery worker -A manage.celery --loglevel=info -f log/celery.log
现在,我想为服务器创建一个服务,如果系统重新启动,这个芹菜工作者应该自己启动。但是,当从服务执行以下命令时,它不会从队列中获取任何新任务。
celery worker -A manage.celery --pool=solo --loglevel=info -f log/celery.log
我可以看到CURL调用击中了服务器,但底层任务并没有在芹菜中开始。
你知道如何解决这个问题吗?
在服务文件中编写的命令中存在问题。我在服务中的命令文件是celery worker -A manage.celery --pool=solo --loglevel=info -f log/celery.log
然而,在终端上,我使用了celery worker -A manage.celery --loglevel=info -f log/celery.log
命令。这里没有使用--pool=solo
,因此可以执行多个任务。
更新了服务文件中的命令,它也开始在那里执行多个任务。
可以从这个链接中深入了解执行池。