SORA中celery原生配置文件的示例分析

這篇文章主要介紹SORA中celery原生配置文件的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

專業(yè)從事企業(yè)網(wǎng)站建設(shè)和網(wǎng)站設(shè)計服務(wù),包括網(wǎng)站建設(shè)、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱、微信公眾號開發(fā)、微信支付寶重慶小程序開發(fā)成都app軟件開發(fā)公司、軟件開發(fā)、等服務(wù)。公司始終通過不懈的努力和以更高的目標來要求自己,在不斷完善自身管理模式和提高技術(shù)研發(fā)能力的同時,大力倡導(dǎo)推行新經(jīng)濟品牌戰(zhà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進行配置,一方面能避免用戶直接和celery配置打交道,同時還能統(tǒng)一整個項目的配置方式(參考openstack的各種conf文件)

以上是“SORA中celery原生配置文件的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文標題:SORA中celery原生配置文件的示例分析
文章鏈接:http://muchs.cn/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)

小程序開發(fā)