2016-12-05 3 views
0

user guide의 예제 다음에 app.conf.humanize(with_defaults=False)을 사용하여 샐러리의 구성을 출력하려고합니다. 그러나 나는 항상 with_defaults=False을 사용할 때 빈 문자열을 얻습니다. 그 대신 구성 변경이 효과 있음을 알고 있습니다. 왜냐하면 변경 사항을 .humanize(with_defaults=True)을 사용하여 볼 수 있기 때문입니다.셀러리의 app.conf.humanize (with_defaults = False)에 대한 기본값으로 간주되는 것은 무엇입니까?

그래서 는 기본이 아닌 방법으로 모듈 myconfig에서 설정을로드하는 방법은 무엇입니까, app.conf.config_from_object('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를 사용하여 셀러리를 시작하고 (나는 with_defaults=True로 변경하면 내가 예상되는 최대 출력을 얻을) config:를 인쇄 :

이 내 소스 코드입니다.

+0

나는 [버그 리포트]를 제기은 (https://github.com/celery/celery/issues/3652), 그 이후 'human.conf ('worker_redirect_stdouts_level')'의 한 항목에 접근 한 후'humanize() – ecerulm

답변

0

config_from_object() 또는 config_from_envvar()이로드 된 구성은 기본값으로 간주되지 않습니다.

관찰 된 동작은 내 bug report에 대한 응답으로 this commit으로 수정 된 버그로 인해 향후 버전의 셀러리가 예상대로 작동합니다. myconfigPYTHONPATH에서 파이썬 모듈입니다

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

:

#myconfig.py 
worker_redirect_stdouts_level='DEBUG' 
관련 문제