• 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可以正常使用。

  • 相关阅读:
    常用数据库validationQuery语句
    mysql 删除某一个数据库下面的所有表,但不删除数据库
    Mysql 删除数据表的三种方式详解
    Java Web应用开发工具
    无效的列类型:getTimestamp not implemented for class oracle.jdbc.driver.T4CNumberAccessor
    request获取当前用户
    tomcat配置https
    shiro标签的使用
    Maven常用命令
    在Maven仓库中添加Oracle数据库的JDBC驱动依赖
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16668735.html
Copyright © 2020-2023  润新知