2016-11-21 30 views
5

Chciałbym wykonywać synchronizację zadań selera podczas moich testów Django bez konieczności uruchamiania selera. Aby to osiągnąć, podałem plik CELERY_ALWAYS_EAGER=True w moim pliku settings.py, ale wygląda na to, że nie działa. Więc postanowiłem zastosować override_settings dekorator do konkretnego testu, który wygląda takNie można wywołać zadania selera w testach Django synchronicznie

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

Niestety, badanie to wciąż wywołuje zadanie w moim pracownikiem selera. Czego może mi brakować? Mówiąc konkretnie, używam Django 1.10 z programem Celery 4.0.0.

+0

Jeśli seler odpowiednie ustawienia są zachowywane na jakimś obiekcie w pamięci w aplikacji selera na starcie twojego biegacza testowego, ich przesłonięcie może nie przynieść efektu. Czy próbowałeś uruchomić swój biegacz testowy z innym plikiem ustawień z wybranymi ustawieniami? – schwobaseggl

+0

To wydaje się być znanym problemem. Dyskusja na ten temat (https://groups.google.com/forum/#!topic/celery-users/1WmrfFZ9nHs). Zmieniają ustawienie w czasie wykonywania na obiekcie 'celery.Cellery(). Conf', a nie na typowym' django.conf' – schwobaseggl

Odpowiedz

10

W selera 4,0 parametrów konfiguracyjnych nie zmieniło,

Spróbuj te zamiast w swoich badaniach,

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

byłem stoi sam problem, rozwiązać za pomocą nowych nazw małe do testów, jak również w zwłoce ustawienia selera.

Oto nowe ustawienia do pierwotnego ustawienia mapy,
http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings

ustawienia Seler zmienić informację:
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#lowercase-setting-names