一、Celery执行异步任务
1、包架构封装
project
├── celery_task # celery包
│ ├── __init__.py # 包文件
│ ├── celery.py # celery连接和配置相关文件,且名字必须交celery.py
│ └── tasks.py # 所有任务函数
├── add_task.py # 添加任务
└── get_result.py # 获取结果
2、建任务、启动任务
建任务、启动celery
3、生成任务(在scripts中建add_task文件)
注意:该文件一定要独立开celery 封装的包。原因:比如celery有一个更新轮播图缓存 的任务,django 项目是可以响应 前台或者后台用户主动更新 轮播图数据库的数据,
当用户更新了数据库数据,就可以执行一下代码,通知celery可以去异步执行更新 轮播图缓存的任务了。
01、直接调用 任务1 中的tasks文件中的test_task方法 (没有走celery)
结果:
02、celery的立即异步执行(.delay表示 走celery异步):在add_task.py文件中
03、celery异步执行后,获取执行后的结果
在scripts中建get_task_result文件
二、celery的延迟异步执行:在add_task.py文件中
结果:
三、celery定时(周期)异步执行 :在celery.py文件中
开两个 Terminal 都cd 到scripts
然后一个执行命令:celery worker -A celery_task_1 -l info -P eventlet
另外一个命令:celery beat -A celery_task_1 -l info (添加任务:自动添加任务,所以要启动一个添加任务的服务)
结果: