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...