1. 程式人生 > >風火程式設計--python釋出celery非同步任務

風火程式設計--python釋出celery非同步任務

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