2014-04-22 30 views
42

मैं First Steps with Celery Tutorial चला रहा हूं।खरगोश एमक्यू के साथ अजवाइन: विशेषता त्रुटि: 'अक्षम बैकएंड' ऑब्जेक्ट में कोई विशेषता नहीं है '_get_task_meta_for'

हम निम्नलिखित कार्य को परिभाषित:

from celery import Celery 

app = Celery('tasks', broker='amqp://[email protected]//') 

@app.task 
def add(x, y): 
    return x + y 

तो यह कहते हैं:

>>> from tasks import add 
>>> add.delay(4, 4) 

लेकिन मैं निम्नलिखित त्रुटि मिलती है:

AttributeError: 'DisabledBackend' object has no attribute '_get_task_meta_for' 

मैं चल रहा हूँ दोनों अजवाइन कार्यकर्ता और खरगोश-एमक सर्वर। इसके बदले में, अजवाइन कार्यकर्ता कार्य को सफल होने की रिपोर्ट करता है:

[2014-04-22 19:12:03,608: INFO/MainProcess] Task test_celery.add[168c7d96-e41a-41c9-80f5-50b24dcaff73] succeeded in 0.000435483998444s: 19 

यह क्यों काम नहीं कर रहा है?

+11

एक ट्यूटोरियल का पालन करते समय त्रुटियों को देखते हुए सेलेरी और खरगोश एमक्यू (या कोई भी लाइब्रेरी जिसे आप सीखना चाहते हैं) के एक नए उपयोगकर्ता के रूप में सॉफ़्टवेयर की गुणवत्ता में विश्वास को प्रेरित नहीं करते हैं। यह सिर्फ सादा निराशाजनक है। मैं सीखना चाहता हूं कि अपनी लाइब्रेरी का उपयोग कैसे करें, न कि इसके कामकाज। – Diederik

उत्तर

34

बस ट्यूटोरियल पढ़ना जारी रखें। इसे Keep Results अध्याय में समझाया जाएगा।

सेलेरी शुरू करने के लिए आपको केवल ब्रोकर पैरामीटर प्रदान करने की आवश्यकता है, जो कार्यों के बारे में संदेश भेजने के लिए आवश्यक है। यदि आप राज्य के बारे में जानकारी पुनर्प्राप्त करना चाहते हैं और तैयार कार्यों द्वारा लौटाए गए परिणाम आपको बैकएंड पैरामीटर सेट करने की आवश्यकता है। आप Configuration docs: CELERY_RESULT_BACKEND में विवरण के साथ पूरी सूची पा सकते हैं।

+7

मुझे ट्यूटोरियल के बाद कोई परेशानी नहीं थी, लेकिन फिर भी इस त्रुटि में भाग गया और इसे सही करने में कठिनाई हुई। मैं एक उबंटू टर्मिनल खिड़की में सेलेरी चला रहा था, और एक दूसरे में पायथन दुभाषिया। पहली विंडो में, मैंने बैकएंड = 'आरपीसी: //' जोड़ा और सेलेरी को पुनरारंभ किया। लेकिन दूसरी विंडो में पाइथन, इस बदलाव से अवगत नहीं था। पाइथन को मारने के लिए मैंने Ctrl + d दबाए जाने के बाद, और फिर से पायथन शुरू किया, यह ठीक काम किया। –

+0

मुझे आपके उत्तर में अंतिम लिंक के साथ 404 मिलते हैं। –

+0

@ ब्रायन ओकले मैंने लिंक अपडेट किया है। हालांकि, सेलेरी वी 4 ने यहां सेटिंग्स बदल दी हैं, इसलिए सावधानी के साथ आगे बढ़ें। – daniula

24

मैं पर एक नज़र होने की सलाह देते हैं: http://www.cnblogs.com/fangwenyu/p/3625830.html

वहाँ आपको लगता है कि के बजाय

app = Celery('tasks', broker='amqp://[email protected]//') 

आप लिख जाना चाहिए

app = Celery('tasks', backend='amqp', broker='amqp://[email protected]//') 

यह है देखेंगे।

+0

यह काम करता है, मैं एक ही समस्या से मुलाकात की। –

13

मामले किसी में एक ही आसान गलती करने के रूप में मैंने किया था बनाया: ट्यूटोरियल इतना स्पष्ट रूप से नहीं कहा गया है, लेकिन लाइन

app = Celery('tasks', backend='rpc://', broker='amqp://') 

अपने tasks.py फ़ाइल में लाइन का एक संपादित है। अब मेरा लिखा है:, तब भी जब एक छोटे से नशे में

$ python 
>>> from tasks import add 
>>> result = add.delay(4,50) 
>>> result.ready() 
>>> False 

सभी ट्यूटोरियल का पालन करने के लिए आसान होना चाहिए:

app = Celery('tasks', backend='rpc://', broker='amqp://[email protected]//') 

जब मैं कमांड लाइन मैं से अजगर को चलाते हैं। अब तक यह उस बार तक नहीं पहुंचता है।

+0

अच्छी तरह से, जब आप ट्यूटोरियल का पालन करते हैं, तो कृपया याद रखें कि task.py को संपादित करने के बाद आपको कार्य मॉड्यूल से ऐड फ़ंक्शन को पुनः आयात करना होगा! मूल रूप से जोड़ने में सही बैकएंड असाइनमेंट के बावजूद() मैं इस त्रुटि को तब तक प्राप्त कर रहा था जब तक कि मैं कंसोल (>>> छोड़ें()) में पाइथन छोड़ देता हूं, उसे वापस ($ पायथन) पर वापस ले जाता है और कार्यों के आयात से पुनः टाइप किया जाता है। – fanny

1

आपकी प्रोजेक्ट निर्देशिका में सेटिंग्स फ़ाइल ढूंढें।

तो: sudo vim settings.py कॉपी/settings.py में पेस्ट करें: CELERY_RESULT_BACKEND = 'djcelery.backends.database: DatabaseBackend'

ध्यान दें: इस है अगर आप के लिए बैकएंड के रूप में Django-अजवाइन का उपयोग कर रहे कतार में संदेशों को संग्रहित करना।

+0

backend_result = rpc को हटाते समय मुझे यह समस्या थी (यानी डिफ़ॉल्ट परिणाम बैकएंड पर निर्भर करता है, जो कोई नहीं है), और फिर बार-बार परिणाम कॉल करना .ready() – axd

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

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