के लिए संदेश कतार के रूप में मोंगोडीबी का उपयोग करके मैं सेलोरी (एक Django ऐप में) संदेश कतार के रूप में MongoDB का उपयोग करने की कोशिश कर रहा हूं। सेलेरी (2.2.0rc2) का वर्तमान विकास संस्करण आपको ऐसा करने देता है, लेकिन मुझे लगता है कि कोई भी श्रमिक मेरे द्वारा बनाए गए कार्यों को लेने के लिए प्रतीत नहीं होता है।सेलेरी
संस्करण: अजवाइन v2.2.0rc3
MongoDB 1.6.5
pymongo 1.9
Django-अजवाइन 2.2.0rc2
अपनी सेटिंग्स में, मैं है:
CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
# Shouldn't need these - defaults are correct.
"host": "localhost",
"port": 27017,
"database": "celery",
"taskmeta_collection": "messages",
}
BROKER_BACKEND = 'mongodb'
BROKER_HOST = "localhost"
BROKER_PORT = 27017
BROKER_USER = ""
BROKER_PASSWORD = ""
BROKER_VHOST = ""
import djcelery
djcelery.setup_loader()
मैं हमने निम्न परीक्षण test.py फ़ाइल बनाई है:
from celery.decorators import task
@task()
def add(x, y):
return x + y
अगर मैं पृष्ठभूमि में celeryd आग लगाना, यह सामान्य रूप से शुरू होता प्रतीत होता है। मैं फिर एक पायथन खोल खोलता हूं और निम्न चलाता हूं:
>>> from myapp.tasks import add
>>> result = add.delay(5,5)
>>> result
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886>
>>> result.ready()
False
समस्या यह है कि कोई भी कर्मचारी कभी भी कार्य नहीं उठाता है। क्या मुझे एक सेटिंग या कुछ याद आ रही है? मैं संदेश कतार में अजवाइन कैसे इंगित करूं?
इंस्टॉल किए गए एप्लिकेशन में एप्लिकेशन है? कुछ भी अगर इसके लॉग में अजवाइन लौट रहा है? एक आम कारण है कि .ready() गलत हो जाएगा जब यह वास्तव में नहीं होना चाहिए क्योंकि कार्यों को पहचाना नहीं गया है, सेलेरी कुछ ऐसा कहेंगे "अज्ञात कार्य अनदेखा: ...." – Bartek
क्या आपने कभी यह काम किया है? मुझे एक ही समस्या है – Nathan
दुर्भाग्यवश, मैंने नहीं किया। – Joe