celery怎么為不同異步任務(wù)分配不同worker

今天小編給大家分享一下celery怎么為不同異步任務(wù)分配不同worker的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

創(chuàng)新互聯(lián)于2013年成立,先為裕安等服務(wù)建站,裕安等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為裕安企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

背景:

之前所有的異步任務(wù)都由統(tǒng)一的一個worker來消費,這樣有個問題,每次更新某個異步任務(wù)代碼后,需要重啟worker,如果有在運行的異步任務(wù),那面重啟后就暫停了,影響業(yè)務(wù)。

所以想到把不通的任務(wù)分配到不通的worker,如果更新某個任務(wù)代碼,重啟對應(yīng)worker即可,不會影響其他業(yè)務(wù)。

開搞

1、配置celery,按正則匹配異步任務(wù)名,分配到指定消費隊列

這里創(chuàng)建4個消費隊列,release,job,sync,celery(默認(rèn))

匹配到sync_release的任務(wù),會調(diào)度到release隊列消費,以此類推,支持正則匹配

import re
# specify worker queue
# https://docs.celeryq.dev/en/latest/userguide/routing.html
app.conf.task_routes = ([
    ('cmapp.tasks.sync_release', {'queue': 'release'}),
    (re.compile(r'.*(job*|Cdd*)'), {'queue': 'job'}),
    (re.compile(r'.*(delay*|owncloud*)'), {'queue': 'sync'}),
    (re.compile(r'.*(clean*|keycloak*)'), {'queue': 'celery'}),
],)

2、啟動消費隊列

-Q指定消費隊列名稱

--hostname配置worker名

--concurrency配置最大并發(fā)

[program:q_release]
environment=ENV=production
directory=/opt/mmback
command=/opt/envs/env-mmweb/bin/celery -A mmback worker -l info --concurrency=20 -Q release --hostname=release@%%h
autorestart=true
autostart=true

supervisorctl update

可以看到已經(jīng)有release任務(wù)在消費。

以上就是“celery怎么為不同異步任務(wù)分配不同worker”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:celery怎么為不同異步任務(wù)分配不同worker
標(biāo)題網(wǎng)址:http://bm7419.com/article38/jjejpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站設(shè)計、網(wǎng)站收錄網(wǎng)站導(dǎo)航、建站公司、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作