2011-12-08 32 views
11

कॉन्फ़िगर किया गया मैंDjango-अजवाइन: नहीं परिणाम बैकएंड

settings.py में अपने प्रोजेक्ट में Django-अजवाइन उपयोग करने के लिए मैं

CELERY_RESULT_BACKEND = "amqp" 

सर्वर

python manage.py celeryd --setting=settings 
के साथ ठीक करना शुरू कर दिया है कोशिश कर रहा हूँ

लेकिन यदि मैं देरी वाले कार्य से परिणाम प्राप्त करना चाहता हूं, तो मुझे निम्न त्रुटि मिलती है:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\celery\result.py", line 108, in ready 
    return self.status in self.backend.READY_STATES 
    File "C:\Python27\lib\site-packages\celery\result.py", line 196, in status 
    return self.state 
    File "C:\Python27\lib\site-packages\celery\result.py", line 191, in state 
    return self.backend.get_status(self.task_id) 
    File "C:\Python27\lib\site-packages\celery\backends\base.py", line 404, in _is 
_disabled 
    raise NotImplementedError("No result backend configured. " 
NotImplementedError: No result backend configured. Please see the documentation 
for more information. 

यह बहुत अजीब है क्योंकि जब मैं सिर्फ सेलेरीड चलाता हूं (उसी सेलरी सेटिंग्स के साथ), यह ठीक काम करता है। क्या किसी ने इससे पहले इस समस्या का सामना किया है?

अग्रिम धन्यवाद!

उत्तर

0

कुछ कैसे कंसोल को सेटिंग्स लेने के लिए django पर्यावरण सेट अप करना है। उदाहरण के लिए, PyCharm में आप django कंसोल चला सकते हैं, जिसमें सब कुछ अपेक्षित काम करता है।

% अजगर manage.py खोल

1

तुम सिर्फ http://www.celeryproject.org/tutorials/first-steps-with-celery/ से नमूने चला रहे हैं, तो आप manage.py के माध्यम से सांत्वना चलाने की आवश्यकता अजवाइन कार्य से हालांकि अजवाइन कार्य निष्पादित किया गया था (कंसोल लॉग)। क्या मैंने पाया था, मैं एक ही Django settings.py में CELERY_RESULT_BACKEND = "redis" स्थापित करने के लिए किया था, लेकिन मैं भी tasks.py

celery = Celery('tasks', broker='redis://localhost') में अजवाइन instantiated था - जो मैं ओवरराइड settings.py संपत्ति लगता है और इसलिए यह बैकएंड को विन्यस्त नहीं किया गया था मेरे सेलरी इंस्टेंस के लिए सर्वर जिसका उपयोग परिणामों को स्टोर करने के लिए किया जाता है।

मैंने इसे हटा दिया और django को सेलेरी को settings.py से गुण प्राप्त करने दें और नमूना कोड मेरे लिए काम करता है।

4

मैं था एक ही समस्या है, जबकि परिणाम वापस पाने:

1

उन लोगों के लिए जो समाधान के लिए एक बेताब खोज में हैं।

settings.py स्क्रिप्ट के अंत में इस लाइन रखो:

djcelery.setup_loader() 

ऐसा लगता है कि Django-अजवाइन यह एक सख्त आदेश के बिना अपनी सेटिंग्स है पर विचार करने के लिए नहीं जा रहा है।

0

बेहतर समझ के लिए AMQP BACKEND SETTINGS देखें

Note The AMQP backend requires RabbitMQ 1.1.0 or higher to automatically expire results. If you are running an older version of RabbitMQ you should disable result expiration like this: CELERY_TASK_RESULT_EXPIRES = None

अपने settings.py के लिए नीचे लाइन जोड़ने का प्रयास करें:

CELERY_TASK_RESULT_EXPIRES = 18000 # 5 hours

0

मेरे मामले में, समस्या थी कि मैं CELERY_RESULT_BACKEND तर्क गुजर रहा था अजवाइन कन्स्ट्रक्टर के लिए:

Celery('proj', 
     broker = 'amqp://guest:[email protected]:5672//', 
     CELERY_RESULT_BACKEND='amqp://', 
     include=['proj.tasks']) 

समाधान बैकएंड तर्क का उपयोग करना था:

Celery('proj', 
     broker = 'amqp://guest:[email protected]:5672//', 
     backend='amqp://', 
     include=['proj.tasks']) 
संबंधित मुद्दे