celery是基於python開發的分布式任務佇列。
它可以讓任務的執行完全脫離主程式,甚至可以被分配到其他主機上執行。我們通常使用它來實現非同步任務(async task)和定時任務(crontab)。它的架構組成如下圖 :
#celery 4.x以上版本不安裝該模組,新增任務時會報錯
使用celery包含三個方面
定義任務函式
執行celery服務
將任務函式新增到broker
定義檔案目錄結構如下:
建立celery_task.py檔案輸入下列**
import進入celery_task.py檔案所在目錄,執行下面命令time
from celery import
celery
broker = "
redis:"#
123456為redis密碼
backend = "
redis:"#
儲存執行結果
celery_test
", broker=broker, backend=backend) #
第1個引數為任務的名稱
deftask1(x, y):
time.sleep(5)
return x + y
celery -a celery_task worker --loglevel=info -p eventletcelery_task為 定義任務函式 的檔案路徑id
啟動成功截圖如下
建立add_task.py檔案輸入下列**
import執行結果如下:time
from celery_task import
task1
#將任務新增到broker中
result = task1.delay(1, 2)
#檢視任務是否執行完成。true表示任務已執行,false表示任務還在執行中
print('
任務執行完成狀態: %s
' % result.ready()) #
time.sleep(6)
print('
任務執行完成狀態: %s
' %result.ready())
run_result = result.get(timeout=1)
print('
任務執行結果: %s
' % run_result)
流程說明:執行dd_task.py檔案會將task1任務新增到broker中,worker服務監控獲取到broker中新增的task1任務,就執行該任務,任務執行完後將執行結果儲存在backend中。
非同步任務佇列Celery在Django中的使用
前段時間在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。在同事的指引下接觸了celery這個非同步任務佇列框架,鑑於網上關於celery和django結合的文件較少,大部分也只是粗粗介紹了大概的流程,...
非同步任務佇列Celery在Django中的使用
前段時間在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。在同事的指引下接觸了celery這個非同步任務佇列框架,鑑於網上關於celery和django結合的文件較少,大部分也只是粗粗介紹了大概的流程,...
非同步任務佇列Celery在Django中的使用
前段時間在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。在同事的指引下接觸了celery這個非同步任務佇列框架,鑑於網上關於celery和django結合的文件較少,大部分也只是粗粗介紹了大概的流程,...