Celery的基本使用,以及完整非同步任務的執行

2021-10-06 15:15:11 字數 1840 閱讀 9175

1.非同步任務celery和中間人rabbitmq

​ 1.1 celery提供非同步任務,遇到耗時操作的任務都可以交給celery來完成

​ 1.2 通訊過程是,生產者(任務發布者)—>訊息佇列(broker)(rabbitmq或者是redis)<—消費者(任務執行人), 生產者把任務快取在訊息佇列中,消費者從任務佇列中把任務取出來執行。

​ 1.3 rabbitmq的安裝:

2.celery的使用

# celery的安裝;

pip install -u celery

# 使用建立主檔案main.py

# 1.設定django配置

import os

os.environ[

"django_settings_module"]=

'這裡是寫專案配置位置'

# demo.settings.dev

from celery import celery

# 建立celery 例項物件

'demo'

)# 這裡的第乙個引數是模組名稱,='__main__',第二個引數是broker的url

# 如果想使用redis作為結果後端,但仍使用rabbitmq作為訊息**(一種流行的組合):

# 對於大的專案可以使用,單獨的配置檔案這裡的目錄是celery_tasks

'celery_tasks.config'

)# 註冊任務,自動載入可用的任務

['celery_tasks.任務一',

'celery_tasks.任務二'])

# 使用task裝飾器輕鬆地從任何可呼叫物件建立任務

'send_sms_code'

,retry_backoff=3)

defsend

(self,sms_code,

**kwargs)

#該bind引數表示該函式將是「繫結方法」,以便您可以訪問任務型別例項上的屬性和方法。

# bind:保證task物件會作為第乙個引數自動傳入

# 任務裝飾器的bind引數將提供對self(任務型別例項)的訪問

# name:非同步任務別名

# retry_backoff:異常自動重試的時間間隔 第n次(retry_backoff×2^(n-1))s

# max_retries:異常自動重試次數的上限

# return ****

print

(sms_code)

# 啟動服務使用

celery -a celery_task.main worker -l info

# -a 指對應的應用程式, 其引數是專案中 celery例項的位置。

# worker 指這裡要啟動的worker。

# -l 指日誌等級,比如info等級。

# 任務預設是程序執行,如果想要使用高併發,可以使用協程方式執行任務

# 預設是程序池方式,程序數以當前機器的cpu核數為參考,每個cpu開四個程序。

# 如何自己指定程序數:celery worker -a proj --concurrency=4

# 如何改變程序池方式為協程方式:celery worker -a proj --concurrency=1000 -p eventlet -c 1000

pip insatll eventlet

celery -a celery_task.main worker -l info -p eventlet -c 1000

# 呼叫celery任務使用delay()方法檢驗引數後,把任務新增到celery

send_sms_code.delay(sms_code,

**kwrags)

celery官方文件

Celery的基本使用

celery是乙個簡單 靈活且可靠的,處理大量訊息的分布式系統 專注於實時處理的非同步任務佇列 同時也支援任務排程 celery 官網 celery 官方文件英文版 celery 官方文件中文版 ps celery在windows系統上會出現不相容的情況1.可以不依賴任何伺服器,通過自身命令,啟動服...

CMFCColorButton的使用以及重繪

cmfccolorbutton是visual studio 2008 sp1版本以上提供的顏色採集器。系統環境 windows 7 程式設計環境 visual studio 2008 sp1 下面介紹下使用步驟 1.新建基於對話方塊的工程,名稱為mycolorbuttondemo 2.拖動乙個按鈕到...

NSSortDescriptor使用以及陣列排序

nssortdescriptor 指定用於物件陣列排序的物件的屬性。物件可能是字典,這種情況就是對字典陣列排序 如果是employee物件需要按照name來排序,就生成下面的descriptor nssortdescriptor descriptor nssortdescriptor sortdes...