02 任務佇列和中間人

2021-08-02 15:08:14 字數 1058 閱讀 1000

任務佇列是一種分配工作到執行緒或者計算機的一種機制。

任務佇列的輸入是叫任務的工作單元,worker程序會不斷監視任務佇列進行新的工作。

celery使用訊息通訊,通常在client和worker之間有個中間人(broker),新加入乙個任務客戶端會傳送乙個訊息到任務佇列,然後中間人會把訊息傳遞給worker。

celery系統由多個worker和broker組成,高可用,橫向擴充套件性強。

可以實現語言間的相互呼叫,通過暴露http介面請求乙個任務。

celery可以執行在單個、多個機器,甚至是資料中心。

celery支援兩種穩定的broker,分別是rabbitmq和redis。本系列文章使用redis作為broker和backend,backend後續介紹。

可以專門安裝帶redis依賴的celerypip install celery[redis]

如果使用過pip install celery就不需要安裝了。

#配置使用redis的broker很容易

from celery import celery

#第一種方法,在建立celery例項時作為引數傳遞

#第二種通過配置broker_url配置項設定

'''url格式為:

redis://:password@iporhost:port/dbnumber

如果對應部分沒填寫預設redis://localhost:6379/0

比如「redis://」、「redis://localhost」...

'''

celery執行非同步任務的時自身並不儲存結果和狀態的,想要獲得返回結果和狀態需要配置結果後端(result backend)用來儲存結果和狀態。

from celery import celery

#第一種和broker一樣,當引數傳遞到celery

#第二種,使用配置引數result_backend

'''url格式同broker格式一樣

'''

參考文件

執行緒池 1 任務佇列模組

執行緒池的思想早有耳聞,中間也涉及好多內容,回過頭來重新設計一下執行緒池.使用者視角 1.建立乙個執行緒池物件,threadpool thpool int minthreads 同時會建立乙個管理者執行緒,負責維護執行緒池,可以通過演算法動態排程增加或減少執行緒 2.加入乙個任務 int thpoo...

WML教程5 任務和任務遮蔽

返回 用來將當前頁面的url壓入url歷史堆疊,並開啟此前的url,若該url不存在,則無效。語法類似,和之間可加入一句或多句,若不加,則必須以的形式出現。重新整理用來重新整理當前的頁面,從而使得頁面內的變數重新整理或置空,語法與prev相同。或。無動作表示什麼也不做,該標籤不能用在中,一般用在覆蓋...

FreeRTOS 七 任務查詢和資訊統計

函式 描述uxtaskpriorityget 查詢某個任務的優先順序 vtaskpriorityset 改變某個函式的優先順序 uxtaskgetsystemstate 獲取系統中任務狀態 vtaskgetinfo 獲取某個任務資訊 獲取某個任務的標籤 tag 值 xtaskgetcurruntta...