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

浙公网安备 33010602011771号