celery_2:异步任务简单使用
目录:
一、celery应用场景
二、使用 Celery 实现异步任务的步骤
三、应用实例
一、celery应用场景
(1)异步任务( async task ):发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作
(2)定时任务( crontab ):在特定时间执行的任务
二、使用 Celery 实现异步任务的步骤:
(1) 创建一个 Celery 实例
(2) 启动 Celery Worker ,通过delay() 或 apply_async()(delay 方法封装了 apply_async, apply_async支持更多的参数 ) 将任务发布到broker
(3) 应用程序调用异步任务
(4)存储结果 (发布的任务需要return才会有结果,否则为空)
三、应用实例
1、test.py
from celery import Celery app = Celery('test', broker="redis://127.0.0.1:6379/1") @app.task def test_task(n): print(f'test: {n}') return n if __name__ == '__main__': # 直接通过delay() 或 apply_async()将异步任务发送到broker # test_task.delay('==== ttttt1 =====') # 延迟30秒执行 test_task.apply_async(('==== ttttt3 =====',), countdown=30)
2、执行脚本,直接通过delay() 或 apply_async()将异步任务发送到broker
python test.py # 查看broker中间件redis,有celery, 类型是列表,存放的是
当前正在队列中的 task,等待被 worker 所接收
127.0.0.1:6379[1]> keys *
1) "_kombu.binding.default"
2) "_kombu.binding.celery"
3) "celery"
3、启动worker:
celery -A test.app worker --loglevel=info