Python Celery多隊(duì)列配置代碼實(shí)例
這篇文章主要介紹了Python Celery多隊(duì)列配置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(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編寫(xiě)任務(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ù)過(guò)期時(shí)間,不建議直接寫(xiě)86400,應(yīng)該讓這樣的magic數(shù)字表述更明顯
CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的內(nèi)容類(lè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的類(lèi)型msgpack為是一種比json更小更快的類(lèi)型,如果用需要安裝相對(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)文章
python打包為linux可執(zhí)行文件的詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于python打包為linux可執(zhí)行文件的詳細(xì)圖文教程,本文介紹的方法可以輕松地將Python代碼變成獨(dú)立的可執(zhí)行文件,需要的朋友可以參考下2024-02-02
Python實(shí)現(xiàn)查詢某個(gè)目錄下修改時(shí)間最新的文件示例
這篇文章主要介紹了Python實(shí)現(xiàn)查詢某個(gè)目錄下修改時(shí)間最新的文件,涉及Python使用os與shutil模塊針對(duì)文件的遍歷、屬性獲取、讀寫(xiě)等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
基于Python實(shí)現(xiàn)蒙特卡洛法計(jì)算圓周率π
蒙特卡羅法也稱統(tǒng)計(jì)模擬法、統(tǒng)計(jì)試驗(yàn)法,是把概率現(xiàn)象作為研究對(duì)象的數(shù)值模擬方法,是按抽樣調(diào)查法求取統(tǒng)計(jì)值來(lái)推定未知特性量的計(jì)算方法,本文我們將介紹如何使用Python來(lái)實(shí)現(xiàn)蒙特卡洛法計(jì)算圓周率π,感興趣的朋友可以參考下2023-06-06
Python學(xué)習(xí)之shell腳本的使用詳解
這篇文章主要為大家分析一個(gè)python庫(kù)–sh(系統(tǒng)調(diào)用),主要內(nèi)容包括其使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下2023-04-04
關(guān)于Python中定制類(lèi)的比較運(yùn)算實(shí)例
今天小編就為大家分享一篇關(guān)于Python中定制類(lèi)的比較運(yùn)算實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
解決NameError:name'pip'is not defined使用pip
使用pip時(shí)遇到NameError:name ‘pip’ is not defined錯(cuò)誤通常是由于在Python環(huán)境內(nèi)直接嘗試運(yùn)行pip命令導(dǎo)致的,正確的做法是在Python外部的命令行中運(yùn)行pip命令,這個(gè)錯(cuò)誤提醒我們?cè)谑褂胮ip時(shí),應(yīng)確保在正確的環(huán)境中執(zhí)行相關(guān)命令2024-10-10
python3+pyqt5+itchat微信定時(shí)發(fā)送消息的方法
今天小編就為大家分享一篇python3+pyqt5+itchat微信定時(shí)發(fā)送消息的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python爬取破解無(wú)線網(wǎng)絡(luò)wifi密碼過(guò)程解析
這篇文章主要介紹了Python爬取破解無(wú)線網(wǎng)絡(luò)密碼過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09

