2016-11-21 4 views
5

셀로리 작업자를 실행하지 않고도 장고 테스트 중에 동 기적으로 셀러리 작업을 호출하려고합니다. 이를 달성하기 위해 내 settings.py에 CELERY_ALWAYS_EAGER=True을 지정했으나 작동하지 않는 것 같습니다. 그래서 나는이Django 테스트에서 셀러 리 작업을 동 기적으로 호출 할 수 없음

@override_settings(CELERY_ALWAYS_EAGER=True, BROKER_BACKEND='memory', 
         CELERY_EAGER_PROPAGATES_EXCEPTIONS=True) 
def test_foo(self): 
... 

불행하게도,이 테스트는 여전히 내 셀러리 노동자의 작업을 호출과 같은 특정 테스트에 장식을 override_settings 적용하기로 결정했다. 내가 뭘 놓칠 수 있니? 구체적으로 말하자면 장고 1.10을 Celery 4.0.0과 함께 사용하고 있습니다. 변경 셀러리 4.0 구성 매개 변수에

+0

테스트 러너를 무시하면 무시 될 수 있습니다. 테스트 러너를 원하는 설정으로 다른 설정 파일로 시작하려고 했습니까? – schwobaseggl

+0

이것은 알려진 문제인 것 같습니다. 주제 (https://groups.google.com/forum/#!topic/celery-users/1WmrfFZ9nHs)에 대한 토론이 있습니다. 그들은 전형적인'django.conf'가 아닌'celery.Celery() .conf' 객체에서 런타임에 설정을 변경합니다. – schwobaseggl

답변

10

,

내가 같은 문제에 직면했다

@override_settings(
    task_eager_propagates=True, 
    task_always_eager=True, 
    broker_url='memory://', 
    backend='memory' 
) 

, 기본에서뿐만 아니라 테스트를 위해 새로운 소문자 이름을 사용하여 해결, 대신 테스트에서 이러한 시도 셀러리 설정. 여기


http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings

셀러리 설정 정보를 변경, 원래 설정으로 맵에 새 설정입니다 : 셀러리 관련 설정은 시작 시간에 셀러리 응용 프로그램에서 일부 메모리 개체를 유지하는 경우
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#lowercase-setting-names