91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中如何實現Celery多隊列配置

發布時間:2021-08-20 13:53:07 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Python中如何實現Celery多隊列配置”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python中如何實現Celery多隊列配置”這篇文章吧。

項目結構

/proj
-__init__
-app.py            #實例化celery對象
-celeryconfig.py        #celery的配置文件
-tasks.py           #celery編寫任務文件

app.py

#coding:utf-8
from __future__ import absolute_import
from celery import Celery

app = Celery('proj', include=['proj.tasks'])   #實例化celery對象

app.config_from_object('proj.celeryconfig')   #引入配置文件

if __name__ == '__main__':            
  app.start()
  • proj參數為celery的名字

  • include參數為啟動時導入的模塊列表

tasks.py

#coding:utf-8
from __future__ import absolute_import

from proj.app import app
@app.task()
def add(x, y):
  return x + y

celeryconfig.py

#coding:utf-8
from kombu import Queue

BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//' # 使用RabbitMQ作為消息代理


CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' # 把任務結果存在了Redis

CELERY_TASK_SERIALIZER = 'msgpack' # 任務序列化和反序列化使用msgpack方案

CELERY_RESULT_SERIALIZER = 'json' # 讀取任務結果一般性能要求不高,所以使用了可讀性更好的JSON

CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任務過期時間,不建議直接寫86400,應該讓這樣的magic數字表述更明顯

CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的內容類型

CELERY_QUEUES = (  #設置add隊列,綁定routing_key
  Queue('add', routing_key='xue.add'),
)


CELERY_ROUTES = {  #projq.tasks.add這個任務進去add隊列并routeing_key為xue.add 
  'projq.tasks.add': { 
    'queue': 'add',
    'routing_key': 'xue.add',
  }
}
  • CELERY_ACCEPT_CONTENT的類型msgpack為是一種比json更小更快的類型,如果用需要安裝相對應的包。

  • CELERY_QUEUES設置一個指定routing_key的隊列,這個名字可以任意指定。

  • CELERY_ROUTES設置路由,對指定的任務名,指定對應的隊列和routing_key,注意,這里的routing_key需要和上面參數的一致。

啟動

在proj的上層目錄輸入

celery -A proj.app worker -Q add -l info

proj.tasks.add為任務名稱,也就是在CELERY_ROUTES設置的那個名稱

add是設置的queue,key=xue.add是設置的routing_key

發布任務

from proj.tasks import add
add.delay(2,3)

多隊列中需要修改的地方

CELERY_QUEUES = (  #設置add隊列,綁定routing_key
  Queue('add', routing_key='xue.add'),
)


CELERY_ROUTES = {  #projq.tasks.add這個任務進去add隊列并routeing_key為xue.add 
  'projq.tasks.add': { 
    'queue': 'add',
    'routing_key': 'xue.add',
  }

配置兩個隊列

# 配置隊列
CELERY_QUEUES = (
  Queue('default', routing_key='default'),
  Queue('隊列1', routing_key='key1'),
  Queue('隊列2', routing_key='key2'),
)
# 路由(哪個任務放入哪個隊列)
CELERY_ROUTES = {
  '任務1': {'queue': '隊列1', 'routing_key': 'key1'},
  '任務2': {'queue': '對列2', 'routing_key': 'key2'},
}

以上是“Python中如何實現Celery多隊列配置”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

越西县| 资中县| 西平县| 包头市| 巴彦县| 肥东县| 新兴县| 石门县| 海门市| 台东县| 漯河市| 兴和县| 微山县| 乌鲁木齐县| 名山县| 报价| 临颍县| 泾川县| 东乌珠穆沁旗| 门源| 炉霍县| 麟游县| 康平县| 宣武区| 裕民县| 集贤县| 涿鹿县| 庆城县| 合作市| 义马市| 嵊州市| 金昌市| 乌苏市| 汉川市| 澎湖县| 玉林市| 光泽县| 旬阳县| 芜湖市| 喜德县| 舟曲县|