zoukankan      html  css  js  c++  java
  • 在windows环境利用celery实现简单的任务队列

    一、背景

      最近因项目需要,学习任务队列Celery的用法;

    二、测试使用环境:

     1.Windows7 x64

     2.Python == 3.7.5

     3.celery == 4.3.0

     4.redis =3.3.11

     5.eventlet==0.25.1 ==> pip install eventlet (windows环境必须安装)

     6.IDE为pycharm

    三、关于celery的安装和卸载处理
     
    pip install celery #安装

      pip install celery == 3.1.25 #指定安装版本

      pip uninstall celery #卸载

    四、Celery分为3个部分

     1.worker部分负责任务的处理,即工作进程(我的理解工作进程就是你写的python代码,当然还包括python调用系统工具功能)

     2.broker部分负责任务消息的分发以及任务结果的存储,这部分任务主要由中间数据存储系统完成,比如消息队列服务器RabbitMQ、redis、

     3.Celery主类,进行任务最开始的指派与执行控制,他可以是单独的python脚本,也可以和其他程序结合,应用到django或者flask等web框架里面以及你能想到的任何应用

    五、上代码:

     1.创建Celery实例tasks.py:

    # -*- coding: utf-8 -*- 

    # 使用celery
    import time
    from celery import Celery
    import redis

    # 创建一个Celery类的实例对象
    app = Celery('celery_tasks.tasks', broker='redis://:topsky@127.0.0.1:6379/1')

    @app.task
    def add(a, b):
    count = a + b
    print('任务函数正在执行....')
    time.sleep(5)
    return count

      2.调用celery任务代码: 

    from celery_tasks.tasks import add

    def notity(a, b):
    # result = a + b
    result = add.delay(a, b)
    return result

    if __name__ == '__main__':
    result = notity(3, 5)
    print(result)

      

     六、执行worker

      1.创建一个worker,等待处理队列中的任务,打开Windows PowerShell终端以管理员身份运行,cd到E:SvnCodemyCode目录中,

      2.执行命令: celery -A celery_tasks.tasks worker -l info -P eventlet

        参数解释,命令中-A参数表示的是Celery APP的名称celery_tasks,这个实例中指的就是tasks.py,后面的tasks就是APP的名称,worker是一个执行任务角色,后面的loglevel=info记录日志类型默认是info,这个命令启动了一个  worker,  用来执行程序中add这个加法任务(task),-P eventlet是防止在windows环境下出现

  • 相关阅读:
    Spring(001)-Hello Spring
    actuator beans不展示
    Java读取property文件
    PostgreSQL 后端存储
    python 中global() 函数
    python项目配置文件格式
    大数据时代,数据成了研究的基石
    10w数据重建索引报错:java.lang.IllegalStateException: Batch statement cannot contain more than 65535 statements
    java学习day15--API-ArrayList--LinkedList
    java学习day14--API-集合(Collection)+List
  • 原文地址:https://www.cnblogs.com/simpleBlue3/p/11906498.html
Copyright © 2011-2022 走看看