3celery基本使用

运行这段代码要等四秒才会打印end task,这是一种阻塞

app.py
#
!/usr/bin/env python # coding:utf8 # author:Z time:2018/9/18 import time def add(x,y): print('enter call func...') time.sleep(4) return x+y if __name__ == '__main__': print('start task...') result=add(2,8) print('end task...') print(result)

 

 

task.py
#!/usr/bin/env python
# coding:utf8
# author:Z time:2018/9/18

import time
from celery import Celery


broker='redis://localhost:6379/1'
backend='redis://localhost:6379/2'
app=Celery('my_task',broker=broker,backend=backend)

@app.task
def add(x,y):
    print('enter call func...')
    time.sleep(4)
    return x+y

修改app.py文件

#!/usr/bin/env python
# coding:utf8
# author:Z time:2018/9/18

from tasks import add

if __name__ == '__main__':
print('start task...')
result=add.delay(2,8)
print('end task...')
print(result)

再次运行app.py,结果一下子就出来了,但是结果不对,因为只是发出了异步任务,但我们的worker没有启动

终端在当前目录输入下面命令

celery worker -A tasks -l INFO#-A用来指定celery实例的位置,-l指定日志的级别

 

add.delay就把任务提交到redis里去了,但刚刚redis没有worker来消费

 

在终端输入
from tasks import add
add.delay(2,8)

result=add.delay(2,8)
result.ready()#查看任务是否执行完毕
result.get()#拿到任务结果

学到3-2

https://www.imooc.com/video/17953

posted @ 2018-09-19 00:09  Operater  阅读(165)  评论(0)    收藏  举报