我正在使用 Flask、Celery 和 Docker 构建一个项目。这个想法是使用 celery 从 rest 调用中运行耗时的进程,其中大多数涉及对外部 api 的调用。首先,我遇到的问题是,当我启动容器时,任务根本没有运行,而且我在日志中看不到任何内容,除了:INFO/MainProcess] Connected to redis://redis:6379/0INFO/MainProcess] mingle: searching for neighborsINFO/MainProcess] mingle: all aloneINFO/MainProcess] celery@34569b50965e ready.我将一个 docker 容器用于烧瓶应用程序,另一个用于芹菜工人,另一个用于 redis 作为代理(由 celery 和 flask-socketio 使用。Flask 应用程序容器上有 celery 定义和实例celery 容器使用flaskapp 映像,但在激活virtualenv 后运行此命令: celery worker -A app.controller.celery -l info然后我打开 celery 容器的日志:docker logs server_celery_1 -f 为了监控任务正在运行。然后我打开邮递员,向烧瓶应用程序中的其余服务发出请求,该服务将任务委托给 celery,但没有任何反应。**但是 ** 如果我打开 Celery 事件命令行应用程序来监视任务(这看起来与使用 redis 时无关……或者是吗?)celery -A app.controller.engine.celery events并运行一些任务……(什么也没发生)……当我按 CTRL+C a 两次退出 celery 事件窗口时,突然我在 celery 容器的日志源中看到日志,日志开始出现,任务开始运行.我错过了什么?
1 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
我通过使用 eventlet 启动 celery worker 来解决这个罕见的问题:
celery worker -A app.controller.engine.celery -l info --concurrency=2 --pool eventlet
我不完全理解为什么它不能与默认的一起使用。
如果有人能对此有所了解,我将不胜感激。
无论如何谢谢
添加回答
举报
0/150
提交
取消