風火程式設計--python釋出celery非同步任務
阿新 • • 發佈:2018-12-11
celery釋出非同步任務(redis資料庫)
單一檔案
1.建立celery應用
from celery import Celery
celery_app = Celery(
"name",
broker = "celery://127.0.0.1:6379/0,
backend="celery://127.0.0.1:6379/1"
)
定義celery任務
@celery_app.task
def celery_job(*args, ***kwargs):
"""定義非同步任務"""
return result
# 任務邏輯
3. 釋出celery任務
celery_obj = celery_job.delay(*args, ***kwargs) result = celery_obj.get() #會發生阻塞, 在需要時再獲取
開啟celery服務
<1>進入專案啟動檔案目錄執行命令: celery -A celery_app的絕對路徑(用.連線) worker -l info
分目錄
1.建立celery_task包
1.1 config.py模組 broker_url = “redis://127.0.0.1:6379/3” result_backend = “redis://127.0.0.1:6379/4”
1.2 main.py模組 celery_app = Celery( “name”) celery_app.config_from_obj(config) # 匯入celery配置 1.3 建立celery任務包 1.3.1 建立tasks模組 import celery_app @celery_app.task def celery_job(*args, **kwargs): “”“定義celery任務”"" # 任務邏輯 return result 1.4 在main模組新增任務自動搜尋功能 celery_app.autodiscover_tasks([ “celery任務包的絕對路徑(用.連線)” ])
2. 在主程式中釋出非同步任務
task_obj = celery_job.delay(*args, **kwargs) result = task_obj.get()
3. 在啟動檔案路徑開啟celery服務
celery -A celery_app的絕對路徑(用.連線) worker -l info