1

ユーザーガイドapp.conf.humanize(with_defaults=False)の例に従って、セロリの設定を印刷しようとしています。しかし、 を使用すると常に空の文字列が返されます。代わりにを使用して変更を確認できるため、構成の変更が有効であることがわかります。with_defaults=False.humanize(with_defaults=True)

で構成を追加するとapp.conf.config_from_object('myconfig')、構成設定が「デフォルト」としてロードされると思いますが、デフォルトではない方法でモジュールで構成をロードする方法はありますか?myconfig

これは私のソースコードです:

#myconfig.py
worker_redirect_stdouts_level='INFO'
imports = ('tasks',)

#tasks.py
from celery import Celery

app = Celery()
app.config_from_object('myconfig')    
print "config: %s" % app.conf.humanize(with_defaults=False)

@app.task
def debug(*args, **kwargs):
    print "debug task args  : %r" % (args,)
    print "debug task kwargs: %r" % (kwargs,)

セロリの使用を開始するenv PYTHONPATH=. celery worker --loglevel=INFOと、印刷されますconfig: (変更するwith_defaults=Trueと、期待される完全な出力が得られます)。

4

1 に答える 1

1

ロードされた構成、config_from_object()またはconfig_from_envvar()デフォルトと見なされない構成。

観測された動作は、私のバグ レポートに応じてこのコミットによって修正されたバグによるものであり、今後のバージョンのセロリは期待どおりに動作します。

from celery import Celery
app = Celery
app.config_from_object('myconfig')
app.conf.humanize()  # returns only settings directly set by 'myconfig' omitting  defaults

myconfigpythonモジュールは次のPYTHONPATHとおりです。

#myconfig.py
worker_redirect_stdouts_level='DEBUG' 
于 2016-12-08T12:21:52.333 に答える