celery_03 配置文件configuration

簡介:
celery配置文件有多種形式,用來改變celery的工做方式;能夠在app實例中進行設置,也能夠用單獨的配置模塊進行配置
 
實例:
>>> from celery import Celery
>>> app = Celery()
>>> app

 

如下幾種設置方式:
 
一、經過 Celery.conf 參數設置
>>> app.conf.CELERY_TIMEZONE 'Europe/London'
 
二、直接進行設置
>>> app.conf.CELERY_ENABLE_UTC = True
 
三、經過update方法進行設置
>>> app.conf.update( ... CELERY_ENABLE_UTC=True, ... CELERY_TIMEZONE='Europe/London', ...)
 
配置文件的執行順序是:
  1. Changes made at runtime. 在程序運行的時候修改
  2. The configuration module (if any) 調用configuration
  3. The default configuration (celery.app.defaults). 調用默認configuration
  Celery.add_defaults() 能夠用來設置默認源文件
 
 
config_from_object方法介紹:
Celery.config_from_object()方法是用來加載configuration對象中的配置文件;這些configuration對象能夠是configuration 模塊,也能夠是其餘屬性的配置
Celery.config_from_object()方法的優先級高,當執行改方法的時候,以前設置的配置文件會被覆蓋,因此一些該方法配置以外的配置須要在該方法執行以後再進行配置
 
 
例1:用加載文件的方式導入配置文件:
定義配置文件 celeryconfig.py:
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Europe/London'
導入配置文件
from celery import Celery
app = Celery()
app.config_from_object('celeryconfig')

 

例2:用配置模塊的方式:
這是建議使用的配置方法,由於這樣意味着這個配置文件不用在程序啓動的時候進行序列化處理,會避免pickle序列化出錯的狀況
 
from celery import Celery
app = Celery()
import celeryconfig
app.config_from_object(celeryconfig)
 
例3:加載一個配置文件類/對象
 
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')

 

config_from_envvar方法介紹:
Celery.config_from_envvar()從環境變量中獲取配置文件的名稱
例如從配置文件中加載CELERY_CONFIG_MODULE這個配置
 
import os
from celery import Celery
#: Set default configuration module name
os.environ.setdefault('CELERY_CONFIG_MODULE', 'celeryconfig')
app = Celery()
app.config_from_envvar('CELERY_CONFIG_MODULE')

 

You can then specify the configuration module to use via the environment:
$ CELERY_CONFIG_MODULE="celeryconfig.prod" celery worker -l info
(這裏不太懂~~)
 
 
用字典的格式配置文件:
若是想用字典的形式去設置配置文件,就用table()方法
app.conf.table(with_defaults=False, censored=True)
 
注意的是celery並不能徹底的過濾掉敏感信息,下面的敏感詞不能出如今配置文件中
API, TOKEN, KEY, SECRET, PASS, SIGNATURE, DATABASE
 
Censored configuration :設限配置操做
當打印日誌將級別設置爲debug或者相似的操做,一些敏感信息例如密碼等不但願被打印出來,celery提供了一些實用工具去實現這種配置,
一種方法是humanize():
app.conf.humanize(with_defaults=False, censored=True)
這種方法會返回表格格式的字符串信息,僅包含相對默認配置進行更改的配置,可是咱們能夠修改with_defaults 參數
來設置是否顯示默認配置
相關文章
相關標籤/搜索