Python Celery多隊(duì)列配置代碼實(shí)例
這篇文章主要介紹了Python Celery多隊(duì)列配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
項(xiàng)目結(jié)構(gòu)
/proj -__init__ -app.py #實(shí)例化celery對(duì)象 -celeryconfig.py #celery的配置文件 -tasks.py #celery編寫任務(wù)文件
app.py
#coding:utf-8 from __future__ import absolute_import from celery import Celery app = Celery('proj', include=['proj.tasks']) #實(shí)例化celery對(duì)象 app.config_from_object('proj.celeryconfig') #引入配置文件 if __name__ == '__main__': app.start()
- proj參數(shù)為celery的名字
- include參數(shù)為啟動(dòng)時(shí)導(dǎo)入的模塊列表
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' # 把任務(wù)結(jié)果存在了Redis CELERY_TASK_SERIALIZER = 'msgpack' # 任務(wù)序列化和反序列化使用msgpack方案 CELERY_RESULT_SERIALIZER = 'json' # 讀取任務(wù)結(jié)果一般性能要求不高,所以使用了可讀性更好的JSON CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任務(wù)過期時(shí)間,不建議直接寫86400,應(yīng)該讓這樣的magic數(shù)字表述更明顯 CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的內(nèi)容類型 CELERY_QUEUES = ( #設(shè)置add隊(duì)列,綁定routing_key Queue('add', routing_key='xue.add'), ) CELERY_ROUTES = { #projq.tasks.add這個(gè)任務(wù)進(jìn)去add隊(duì)列并routeing_key為xue.add 'projq.tasks.add': { 'queue': 'add', 'routing_key': 'xue.add', } }
- CELERY_ACCEPT_CONTENT的類型msgpack為是一種比json更小更快的類型,如果用需要安裝相對(duì)應(yīng)的包。
- CELERY_QUEUES設(shè)置一個(gè)指定routing_key的隊(duì)列,這個(gè)名字可以任意指定。
- CELERY_ROUTES設(shè)置路由,對(duì)指定的任務(wù)名,指定對(duì)應(yīng)的隊(duì)列和routing_key,注意,這里的routing_key需要和上面參數(shù)的一致。
啟動(dòng)
在proj的上層目錄輸入
celery -A proj.app worker -Q add -l info
proj.tasks.add為任務(wù)名稱,也就是在CELERY_ROUTES設(shè)置的那個(gè)名稱
add是設(shè)置的queue,key=xue.add是設(shè)置的routing_key
發(fā)布任務(wù)
from proj.tasks import add add.delay(2,3)
多隊(duì)列中需要修改的地方
CELERY_QUEUES = ( #設(shè)置add隊(duì)列,綁定routing_key Queue('add', routing_key='xue.add'), ) CELERY_ROUTES = { #projq.tasks.add這個(gè)任務(wù)進(jìn)去add隊(duì)列并routeing_key為xue.add 'projq.tasks.add': { 'queue': 'add', 'routing_key': 'xue.add', }
配置兩個(gè)隊(duì)列
# 配置隊(duì)列 CELERY_QUEUES = ( Queue('default', routing_key='default'), Queue('隊(duì)列1', routing_key='key1'), Queue('隊(duì)列2', routing_key='key2'), )
# 路由(哪個(gè)任務(wù)放入哪個(gè)隊(duì)列) CELERY_ROUTES = { '任務(wù)1': {'queue': '隊(duì)列1', 'routing_key': 'key1'}, '任務(wù)2': {'queue': '對(duì)列2', 'routing_key': 'key2'}, }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyQt5+QtChart實(shí)現(xiàn)柱狀圖的繪制
QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)柱狀圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12python構(gòu)造函數(shù)init實(shí)例方法解析
這篇文章主要介紹了python構(gòu)造函數(shù)init實(shí)例方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Python基礎(chǔ)知識(shí)之推導(dǎo)式詳解
這篇文章主要介紹了Python基礎(chǔ)知識(shí)之推導(dǎo)式詳解,Python推導(dǎo)式是一種簡(jiǎn)潔高效的代碼編寫方式,可以用一行代碼來創(chuàng)建列表、集合、字典等復(fù)雜數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下2023-07-07python判斷windows系統(tǒng)是32位還是64位的方法
這篇文章主要介紹了python判斷windows系統(tǒng)是32位還是64位的方法,實(shí)例分析了兩種解決方法,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05opencv-python 開發(fā)環(huán)境的安裝、配置教程詳解
這篇文章主要介紹了opencv-python 開發(fā)環(huán)境的安裝、配置,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09基于Python實(shí)現(xiàn)計(jì)算納什均衡的示例詳解
納什均衡是一種博弈論中的概念,它描述了一種平衡狀態(tài),其中每個(gè)參與者都不能通過獨(dú)立改變其決策來提高自己的利益。本文就來用Python中的Nashpy和PuLP實(shí)現(xiàn)計(jì)算納什均衡,感興趣的可以了解一下2023-02-02Python Pygame實(shí)戰(zhàn)之塔防游戲的實(shí)現(xiàn)
這篇文章主要介紹了如何利用Python中的Pygame模塊制作簡(jiǎn)單的塔防小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試2022-03-03淺談numpy 中dot()函數(shù)的計(jì)算方式
這篇文章主要介紹了淺談numpy 中dot()函數(shù)的計(jì)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05