2012-05-20 12 views
10

पर djcelery परिणाम बैकएंड को सही तरीके से कॉन्फ़िगर कैसे करें मैं डेटाबेस में कार्य परिणामों को संग्रहीत करने के लिए djangocelery सेट करने का प्रयास कर रहा हूं।डेटाबेस

मैं सेट:

CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend' 

तो मैं समन्वयित और डीबी (कोई त्रुटि) चले गए।

सेलेरी काम कर रही है और कार्य संसाधित हो जाते हैं (मुझे परिणाम मिल सकते हैं), लेकिन व्यवस्थापक दिखाता है कि कोई कार्य नहीं है। डेटाबेस में दो टेबल celery_taskmeta और djcelery_taskmeta हैं। पहला परिणाम परिणाम धारण कर रहा है और दूसरा व्यवस्थापक में प्रदर्शित होता है। किसी के पास अंतर्दृष्टि है कि इसे ठीक से कैसे कॉन्फ़िगर करें?

+0

[निगरानी सेलरी, मुझे क्या उपयोग करना चाहिए?] के संभावित डुप्लिकेट? (Http://stackoverflow.com/questions/5809408/monitoring-celery-what-should-i-use) –

उत्तर

18

the doc देखें, जब आप डीजेसेलरी का उपयोग करते हैं, CELERY_RESULT_BACKEND="database" सेट करें या इस लाइन को लिखने के लिए भी परेशान न करें क्योंकि डीजेसेलरी इसे डिफ़ॉल्ट रूप से सेट करता है।

परिणाम celery_taskmeta तालिका में संग्रहीत किया जाता है, तो आप djcelery.models.TaskMeta रजिस्टर खुद के द्वारा व्यवस्थापक चाहिए:

# in some admin.py, which is contained by an app after `djcelery` in `INSTALLED_APPS` 
# or directly in djcelery/admin.py 

from djcelery.models import TaskMeta 
class TaskMetaAdmin(admin.ModelAdmin): 
    readonly_fields = ('result',)  
admin.site.register(TaskMeta, TaskMetaAdmin) 
+1

मैंने 'CELERY_RESULT_BACKEND' को' ' डेटाबेस "' लेकिन अभी भी आईडी काम नहीं करता है। मेरे पास एप्लिकेशन डीजेसेलरी में व्यवस्थापक में टास्कस्टेट टेबल है, और व्यवस्थापक में पंजीकृत उस ऐप के अन्य मॉडल काम कर रहे हैं --- कार्यकर्ता मॉडल जुड़े श्रमिकों को दिखाता है। –

+1

टास्कस्टेट निगरानी के लिए है: http://docs.celeryproject.org/en/latest/userguide/monitoring.html#django-admin-monitor – asksol

+1

यह भी ध्यान रखें कि निगरानी सभी दलालों के लिए काम नहीं करती है। केवल वे लोग जिनके पास इस तालिका में 'fanout' समर्थन है: http://kombu.readthedocs.org/en/latest/introduction.html#transport-comparison – asksol

10

सही जवाब के साथ संबंधित प्रश्न here है।

आप वास्तव में चलाना चाहिए

python manage.py celery worker -E 

और

python manage.py celerycam 

उसके बाद कार्य परिणामों व्यवस्थापक में प्रदर्शित किया जाएगा (Djcelery> कार्यों)

0

जैसे कॉन्फिग अद्यतन चलती
app.conf.update (CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend')

फ़ाइल celery.py के अंत में मेरे लिए चाल किया था।