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

 

posted @ 2020-03-16 20:24  流年中渲染了微笑  阅读(166)  评论(2编辑  收藏  举报