一、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 (添加任務:自動添加任務,所以要啟動一個添加任務的服務)
結果: