celery_03 配置文件configuration


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

 

以下幾種設置方式:
 
1、通過 Celery.conf 參數設置
>>> app.conf.CELERY_TIMEZONE 'Europe/London'
 
2、直接進行設置
>>> app.conf.CELERY_ENABLE_UTC = True
 
3、通過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 參數
來設置是否顯示默認配置
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM