2016-11-21 36 views
5

Kereviz görevlerini, kereviz işçisine ihtiyaç duymadan, Django sınamaları sırasında eşzamanlı olarak çağırmak istiyorum. Bunu başarmak için benim settings.py içinde CELERY_ALWAYS_EAGER=True belirtmiştim ama işe yaramıyor. Bu yüzden buDjango sınamalarında kereviz görevini eşzamanlı olarak çalıştıramazsınız

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

Maalesef bu test hala benim kereviz işçisi görevi çağırır gibi görünen belirli teste dekoratör override_settings uygulamaya karar verdi. Ne eksik olabilirim? Özel olmak gerekirse, Celery 4.0.0 ile Django 1.10 kullanıyorum. değişti kereviz 4,0 yapılandırma parametreleri

+0

Test koşucunuzun onları geçersiz kılması, hiçbir etkisi olmayabilir. Test çalıştırıcınızı istediğiniz ayarlarla farklı bir ayar dosyasıyla başlatmayı denediniz mi? – schwobaseggl

+0

Bu, bilinen bir sorun gibi görünüyor. Konuyla ilgili bir tartışma var (https://groups.google.com/forum/#!topic/celery-users/1WmrfFZ9nHs). Ayarları, çalışma zamanında değiştirerek, "celery.Celery(). Conf" nesnesini, tipik "django.conf" değil – schwobaseggl

cevap

10

,

Ben aynı sorunu bakıyordu

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

varsayılan yanı sıra testler için yeni küçük adlarını kullanarak çözmüş, yerine testlerde bu deneyin kereviz ayarları. İşte


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

Kereviz ayarları hakkında bilgi değiştirmek, orijinal ayarlar haritaya yeni ayarlar geçerli: kereviz ilgili ayarları başlangıç ​​zamanında kereviz uygulamasında bazı bellek içi nesne üzerinde kalıcı ise
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#lowercase-setting-names

İlgili konular