鍍金池/ 問答/Python  網(wǎng)絡(luò)安全/ celery 怎么配置多worker分別對(duì)應(yīng)一個(gè)queue

celery 怎么配置多worker分別對(duì)應(yīng)一個(gè)queue

想要弄一個(gè)worker對(duì)應(yīng)一個(gè)queue,但是每個(gè)worker只注冊(cè)一個(gè)任務(wù),調(diào)用這個(gè)任務(wù)直接扔到對(duì)應(yīng)的queue里,怎么寫配置啊。。。弄了一天了。。

回答
編輯回答
蟲児飛

最新的文檔看這里,http://docs.celeryproject.org...
這是我自己寫的文檔,我當(dāng)時(shí)測(cè)試的時(shí)候用到了djcelery的配置界面,代碼里可以這么指定隊(duì)列和路由鍵

>>> from feeds.tasks import import_feed
>>> import_feed.apply_async(args=['http://cnn.com/rss'],
...                         queue='feed_tasks',
...                         routing_key='feed.import')

任務(wù)路由?
?
本節(jié)只討論自動(dòng)路由,更詳細(xì)內(nèi)容可以參考文檔 http://docs.celeryproject.org...。?
?
默認(rèn)設(shè)置情況下Celery自動(dòng)開啟路由功能,當(dāng)指定的隊(duì)列不存在時(shí),Celery會(huì)自動(dòng)創(chuàng)建?;谶@一特性,在settings.py中可以添加以下配置項(xiàng),在任務(wù)和隊(duì)列名稱之間指定對(duì)應(yīng)關(guān)系。?
CELERY_ROUTES = {'app.tasks.minus': {'queue': 'minus'}}?
?
當(dāng)設(shè)置修改完成之后,需要修改工作線程的啟動(dòng)參數(shù),指定工作線程需要處理的隊(duì)列。例如這里定義了兩個(gè)工作線程服務(wù) cdworker1和cdworker2。?
?
[root@localhost system]# cat cdworker1.service?
[Unit]?
Description=celerydemoworker daemon?
After=network.target?
?
[Service]?
User=nginx?
Group=nginx?
WorkingDirectory=/opt/apps/celerydemo?
ExecStart=/opt/apps/celerydemo/env/bin/python /opt/apps/celerydemo/manage.py celery worker -A celerydemo -n cdworker1 -l info -f /var/log/celery/cdworker1.log?
?
[Install]?
WantedBy=multi-user.target?
?
[root@localhost system]# cat cdworker2.service?
[Unit]?
Description=celerydemominusworker daemon?
After=network.target?
?
[Service]?
User=nginx?
Group=nginx?
WorkingDirectory=/opt/apps/celerydemo?
ExecStart=/opt/apps/celerydemo/env/bin/python /opt/apps/celerydemo/manage.py celery worker -n cdworker2 -A celerydemo -l info -f /var/log/celery/cdworker2.log -Q minus?
?
[Install]?
WantedBy=multi-user.target?
?
配置文件創(chuàng)建完成后,啟動(dòng)服務(wù)。?
?
打開瀏覽器,訪問http://<site_fqdn>/admin/djcelery?
單擊Preodic tasks,可以查看已存在的定時(shí)任務(wù)?
在Preodic tasks列表頁面,單擊右上角的添加按鈕可以創(chuàng)建定時(shí)任務(wù)?
在Name文本框中鍵入任務(wù)名稱?
在Task (registered)下拉框中選擇需要定時(shí)執(zhí)行的任務(wù)?
在Schedule下選擇或創(chuàng)建任務(wù)執(zhí)行間隔。?
在Arguments下指定任務(wù)所需參數(shù)。?
在Execution Options下指定隊(duì)列名稱(名稱區(qū)分大小寫),完成之后保存。?

2017年10月23日 16:43