2012-05-18 7 views
6

मान्यता प्राप्त नहीं है मैं CELERY_RESULT_BACKEND = "AMQP" celeryconfig.py में सेट लेकिन मैं मिलता है:मैं django-celery के लिए बैकएंड कैसे सेट करूं? मैं CELERY_RESULT_BACKEND निर्धारित करते हैं, लेकिन यह

>>> from tasks import add 
>>> result = add.delay(3,5) 
>>> result.ready() 

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 105, in ready 
    return self.state in self.backend.READY_STATES 
    File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 184, in state 
    return self.backend.get_status(self.task_id) 
    File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/backends/base.py", line 414, in _is_disabled 
    raise NotImplementedError("No result backend configured. " 
NotImplementedError: No result backend configured. Please see the documentation for more information. 
+0

क्या आप celeryconfig.py के समान निर्देशिका से अजगर खोल चला रहे हैं? – mher

उत्तर

12

मैं सिर्फ यह माध्यम से चला गया तो मैं इस पर कुछ प्रकाश डाला सकता है से अपने आदेश। कोई भी महान दस्तावेज के बारे में सोच सकता है कि इनमें से कुछ थोड़ा और स्पष्ट होगा।

मुझे लगता है कि आपके पास RabbitMQ ऊपर और काम कर रहा है (इसे चलाना आवश्यक है), और आपके पास dj-celery स्थापित है।

एक बार आपके पास ऐसा करने के बाद आपको अपनी सेटिंग.py फ़ाइल में इस एकल पंक्ति को शामिल करना होगा। और

python manage.py celeryd -E -B --loglevel=info 

-E कहा गया है कि आप पर कब्जा कर लिया घटनाओं चाहते -B कहा गया है आपके द्वारा चलाए जा celerybeats हैं:

BROKER_URL = "amqp://guest:[email protected]:5672//" 

तो फिर तुम syncdb चलाने के लिए और का उपयोग कर इस बात शुरू करने की जरूरत है। पूर्व आपको वास्तव में व्यवस्थापक विंडो में कुछ देखने में सक्षम बनाता है और बाद में आपको शेड्यूल करने की अनुमति देता है। अंत में आपको यह सुनिश्चित करने की ज़रूरत है कि आप वास्तव में घटनाओं और स्थिति को पकड़ने जा रहे हैं। तो एक और टर्मिनल में इस चलाएँ:

./manage.py celerycam 

और फिर अंत में अपने दस्तावेज़ों में प्रदान की काम कर उदाहरण देखने के लिए सक्षम .. - फिर यह सोचते हैं आप tasks.py वह यह है कि करने के लिए कहते हैं बनाया।

>>> result = add.delay(4, 4) 
>>> result.ready() # returns True if the task has finished processing. 
False 
>>> result.result # task is not ready, so no return value yet. 
None 
>>> result.get() # Waits until the task is done and returns the retval. 
8 
>>> result.result # direct access to result, doesn't re-raise errors. 
8 
>>> result.successful() # returns True if the task didn't end in failure. 
True 

इसके अलावा तो आप व्यवस्थापक पैनल में अपनी स्थिति देखने के लिए सक्षम हैं।

Django Task Manager

मुझे आशा है कि इस मदद करता है !! मैं एक और चीज जोड़ूंगा जिसने मेरी मदद की। खरगोश एमक्यू लॉग फ़ाइल देखना महत्वपूर्ण था क्योंकि इससे मुझे यह पहचानने में मदद मिली कि डीजेंगो-अजवाइन वास्तव में खरगोश एमक्यू से बात कर रहा था।

+0

मेरे पास rabbitmq चल रहा था और django-celery स्थापित था, लेकिन मेरे पास django-अजवाइन नहीं चल रहा था। – johnlockwood

1

आप Django अजवाइन चला रहे हैं?

यदि ऐसा है, तो आपको django (या जो भी तकनीकी शब्द है) के संदर्भ में एक अजगर खोल शुरू करने की आवश्यकता है।

प्रकार:

python manage.py shell 

और कोशिश है कि खोल

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