• celery


    celery,处理任务的Python的模块 对任务进行分发和处理

    场景1:

    对【耗时的任务】,通过celery,将任务添加到broker(队列),然后立即给用户返回一个任务ID。
    当任务添加到broker之后,由worker去broker获取任务并处理任务。
    任务弯完成之后,再将结果放到backend中

    用户想要检查结果,提供任务ID,我们就可以去backend中去帮他查找。

    场景2:

    定时任务(定时发布/定时拍卖)

    #################################################

    环境搭建

    安装celery

    pip install celery

    在安装broker ----redis或者rabbitMQ

    安装redis

    pip istall redis
    pip instal pika # 专门操作rabbitMQ

    快速开始

    from celery import Celery
    
    task = Celery('task', broker="redis://192.168.56.131:6379/1",backend="redis://192.168.56.131:6379/2")
    
    
    @task.task
    def myfun1(x,y):
        return x+y
    
    
    @task.task
    def myfun2():
        return 'func2'
    
    
    @task.task
    def myfun3():
        return 'func3'
    s1.py
    from s1 import myfun1, myfun2, myfun3
    
    res = myfun1.delay()
    
    print(res.id)        # 任务id                # c4ac3a7e-870c-418a-a7a7-f8d3ae06cf9f
    s2.py
    from celery.result import AsyncResult
    from s1 import task
    res=AsyncResult(id='c4ac3a7e-870c-418a-a7a7-f8d3ae06cf9f', app=task)
    
    print(res.ready())        # True
    print(res.successful())   # True
    print(res.get())          # func1
    s3.py

    运行程序步骤

    1. 启动redis

    2. 启动worker

      

    先安装 pip install eventlet
    再启动 celery worker -A s1 -l info -P eventlet
    # 进入目录
    celery worker -A s1 -l info    
    
    # -l是日志【代码上线就不加了】

    在window上会报一个错

    先安装 pip install eventlet
    再启动 celery worker -A s1 -l info -P eventlet

      3. 创建代码

    python3 s2.py

      4. 查看任务状态

    python3 s3.py
  • 相关阅读:
    编译Android系统源码和内核源码
    Ubuntu中的解压缩文件的方式
    将秒数转换为基于00:00的时间
    git sshkeygen Fingerprint cannot be generated解决方法
    git bash下的选择、复制、粘贴
    mac 配置jdk maven
    自定义标签
    垃圾收集器和收集算法
    多线程并发中的同步
    现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用Join
  • 原文地址:https://www.cnblogs.com/a438842265/p/12506264.html
Copyright © 2020-2023  润新知