2016-11-21 10 views
5

मैं अपने Django परीक्षणों के दौरान सेलरी कार्य को चलाने के बिना सिलेरी कार्यों को सिंक्रनाइज़ करना चाहता हूं। इसे प्राप्त करने के लिए मैंने अपने सेटिंग्स.py में CELERY_ALWAYS_EAGER=True निर्दिष्ट किया है लेकिन यह काम नहीं कर रहा है। तो मुझे लगता है कि लग रहा है इसDjango परीक्षण में सिलेरी कार्य को सिंक्रनाइज़ नहीं कर सकता

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

दुर्भाग्य से, यह परीक्षण अभी भी कार्य मेरी अजवाइन कार्यकर्ता में invokes की तरह विशेष परीक्षा के लिए डेकोरेटर override_settings लागू करने का फैसला। मैं क्या याद कर सकता हूँ? विशिष्ट होने के लिए, मैं सेलेरी 4.0.0 के साथ Django 1.10 का उपयोग कर रहा हूं।

+0

अजवाइन संबंधित सेटिंग्स स्टार्टअप समय पर अजवाइन अनुप्रयोग में कुछ में स्मृति वस्तु पर कायम रहे हैं आपके परीक्षण धावक के, उन्हें ओवरराइड करने का कोई प्रभाव नहीं पड़ सकता है। क्या आपने अपने परीक्षण धावक को अपनी इच्छित सेटिंग्स के साथ एक अलग सेटिंग्स फ़ाइल के साथ शुरू करने का प्रयास किया है? – schwobaseggl

+0

यह ज्ञात मुद्दा प्रतीत होता है। विषय पर एक चर्चा है (https://groups.google.com/forum/#!topic/celery-users/1WmrfFZ9nHs)। वे 'celery.Celery()। Conf' ऑब्जेक्ट पर रनटाइम पर सेटिंग बदलते हैं, सामान्य 'django.conf' नहीं – schwobaseggl

उत्तर

10

अजवाइन 4.0 कॉन्फ़िगरेशन पैरामीटर में बदल गया है,

बजाय अपने परीक्षण में इन की कोशिश करें,

@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

संबंधित मुद्दे