Flask 学习-59.解决celery 在windows 上接收任务不执行的问题

Posted 上海-悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask 学习-59.解决celery 在windows 上接收任务不执行的问题相关的知识,希望对你有一定的参考价值。

前言

windows10 的环境,python3.8环境,使用celery 5.x 的版本,发现任务接收了,但是一直没执行,无返回结果。
早期的celery 3.x版本是可以支持windows 平台的,但是跟python3.8 不兼容了。

环境描述

以下是celery 官方文档上对版本的要求
Celery 5.2 版运行于

  • Python❨3.7、3.8、3.9、3.10❩
  • PyPy3.7、3.8 ❨7.3.7❩

Celery 4.x 是支持 Python 2.7 的最后一个版本,
Celery 5.x 需要 Python 3.6 或更高版本。
Celery 5.1.x 还需要 Python 3.6 或更高版本。
Celery 5.2.x 需要 Python 3.7 或更新版本。

如果您运行的是旧版本的 Python,则需要运行旧版本的 Celery:

Python 2.7 或 Python 3.5:Celery 系列 4.4 或更早版本。
Python 2.6:Celery 系列 3.1 或更早版本。
Python 2.5:Celery 系列 3.0 或更早版本。
Python 2.4 是 Celery 系列 2.2 或更早版本。

Celery 是一个资金很少的项目,所以不支持 Microsoft Windows。请不要打开与该平台相关的任何问题。

启动服务

启动celery worker服务

>celery -A your_application.celery worker -l info

当执行任务的时候,从运行日志可以看到任务已经received 了

 Task demo/add[7167654b-e5eb-4d35-b82d-ac36c0b8926e] received

解决方案:

windows 启动 celery 需要指明使用 eventlet 进程池, 需先安装eventlet

pip install eventlet

启动celery worker服务的时候,使用-P eventlet参数

celery -A your_application.celery worker -P eventlet  -c 2 -l info

flask + celery 完整示例参考这篇https://www.cnblogs.com/yoyoketang/p/16668657.html

备注:
在windows上使用celery,用ctrl+C无法停掉访问,会卡死,只能强制关闭。其它linux、mac可以正常使用。

以上是关于Flask 学习-59.解决celery 在windows 上接收任务不执行的问题的主要内容,如果未能解决你的问题,请参考以下文章

Flask 学习-58.基于 Celery 的后台任务

Flask插件系列之flask_celery

python之celery在flask中使用

使用 Flask 动态调度 Celery Beat 任务

celery出现警告或异常的解决方式

如何在 Celery 任务中使用 Flask-SQLAlchemy