這篇文章主要介紹SORA中celery原生配置文件的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
專業(yè)從事企業(yè)網(wǎng)站建設(shè)和網(wǎng)站設(shè)計服務(wù),包括網(wǎng)站建設(shè)、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱、微信公眾號開發(fā)、微信支付寶重慶小程序開發(fā)、成都app軟件開發(fā)公司、軟件開發(fā)、等服務(wù)。公司始終通過不懈的努力和以更高的目標(biāo)來要求自己,在不斷完善自身管理模式和提高技術(shù)研發(fā)能力的同時,大力倡導(dǎo)推行新經(jīng)濟(jì)品牌戰(zhàn)略,促進(jìn)互聯(lián)網(wǎng)事業(yè)的發(fā)展。
我們把celery.py的配置項拿出來,在proj目錄中創(chuàng)建celeryconfig.py,內(nèi)容如下:
CELERY_TASK_RESULT_EXPIRES=3600 CELERY_TASK_SERIALIZER='json' CELERY_ACCEPT_CONTENT=['json'] CELERY_RESULT_SERIALIZER='json'
修改celery.py:
from __future__ import absolute_import from celery import Celery app = Celery('proj', broker='amqp://guest@localhost//', backend='amqp://guest@loaclhost//', include=['proj.agent']) #app.conf.update( # CELERY_TASK_RESULT_EXPIRES=3600, # CELERY_TASK_SERIALIZER='json', # CELERY_ACCEPT_CONTENT=['json'], # CELERY_RESULT_SERIALIZER='json' #) app.config_from_object('proj.celeryconfig') if __name__ == '__main__': app.start()
使用app.config_from_object()導(dǎo)入配置,注意需要以如下格式才能導(dǎo)入:path:module,celeryconfig文件要和celery文件在同一目錄
啟動一下:
root@workgroup0:~/celeryapp/configtest# celery -A proj worker -l info /usr/local/lib/python2.7/dist-packages/celery/platforms.py:766: RuntimeWarning: You are running the worker with superuser privileges, which is absolutely not recommended! Please specify a different user using the -u option. User information: uid=0 euid=0 gid=0 egid=0 uid=uid, euid=euid, gid=gid, egid=egid, -------------- celery@workgroup0 v3.1.17 (Cipater) ---- **** ----- --- * *** * -- Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty -- * - **** --- - ** ---------- [config] - ** ---------- .> app: proj:0x7fade8bc1550 - ** ---------- .> transport: amqp://guest:**@localhost:5672// - ** ---------- .> results: amqp://guest@loaclhost// - *** --- * --- .> concurrency: 1 (prefork) -- ******* ---- --- ***** ----- [queues] -------------- .> celery exchange=celery(direct) key=celery [tasks] . proj.agent.add . proj.agent.mul [2015-04-05 16:26:11,577: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672// [2015-04-05 16:26:11,603: INFO/MainProcess] mingle: searching for neighbors [2015-04-05 16:26:12,622: INFO/MainProcess] mingle: all alone [2015-04-05 16:26:12,648: WARNING/MainProcess] celery@workgroup0 ready. ^C worker: Hitting Ctrl+C again will terminate all running tasks! worker: Warm shutdown (MainProcess)
啟動成功了。
途中的碰壁經(jīng)歷:因為我一開始是直接把celery.py的配置內(nèi)容復(fù)制過來,沒有去掉配置內(nèi)容間的逗號,像這樣:
CELERY_TASK_RESULT_EXPIRES=3600, CELERY_TASK_SERIALIZER='json', CELERY_ACCEPT_CONTENT=['json'], CELERY_RESULT_SERIALIZER='json'
導(dǎo)致無法啟動worker。后來看了看官方文檔的example,才搞定了這一問題。只要去掉那些逗號即可。
反思:雖然celery還可以使用這種形式的配置:
from celery import Celery app = Celery() class Config: CELERY_ENABLE_UTC = True CELERY_TIMEZONE = 'Europe/London' app.config_from_object(Config) # or using the fully qualified name of the object: # app.config_from_object('module:Config')
還可以使用app.config_from_envvar()來配置,但是我覺得我用的那種方式更加方便。而且把配置內(nèi)容都放在一個單獨文件中,避免修改源碼。
SORA可能會使用app.conf.update的方式配合configparser對worker進(jìn)行配置,一方面能避免用戶直接和celery配置打交道,同時還能統(tǒng)一整個項目的配置方式(參考o(jì)penstack的各種conf文件)
以上是“SORA中celery原生配置文件的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:SORA中celery原生配置文件的示例分析
文章鏈接:http://m.newbst.com/article44/gdsehe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、微信公眾號、小程序開發(fā)、ChatGPT、企業(yè)網(wǎng)站制作、品牌網(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)