2012-05-20 5 views
10

Ich versuche, Djangocelery einzurichten, um Aufgabenergebnisse in der Datenbank zu speichern.Wie djcellery Ergebnisse Backend zu Datenbank richtig zu konfigurieren

I gesetzt:

CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend' 

dann ich synchronisiert und migriert die db (keine Fehler).

Sellerie arbeitet und Aufgaben werden verarbeitet (ich kann die Ergebnisse erhalten), aber Admin zeigt, dass es keine Aufgaben gibt. In der Datenbank sind zwei Tabellen celery_taskmeta und djcelery_taskmeta. Der erste hält die Ergebnisse und der zweite wird im Admin angezeigt. Jeder hat Einblick, wie man es richtig konfiguriert?

+0

möglich duplikat von [Monitoring Sellerie, was soll ich verwenden?] (Http://stackoverflow.com/questions/5809408/monitoring-sellery-what-should-i-use) –

Antwort

18

Überprüfen Sie the doc, wenn Sie djcellery verwenden, setzen Sie CELERY_RESULT_BACKEND="database" oder nicht einmal die Mühe, diese Zeile zu schreiben, da djcellery es standardmäßig setzt.

Das Ergebnis in celery_taskmeta Tabelle gespeichert ist, sollten Sie djcelery.models.TaskMeta registrieren, indem Sie sich Leiter:

# 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

Ich habe 'CELERY_RESULT_BACKEND' in' "geändert Datenbank "' aber immer noch ID funktioniert nicht.Ich habe TaskState Tabelle in Admin in Anwendung djcellery, und andere Modelle aus dieser App im Admin registriert arbeiten --- Arbeitermodell zeigt verbundene Arbeiter. –

+1

TaskState dient zur Überwachung: http://docs.selleryproject.org/en/latest/userguide/monitoring.html#django-admin-monitor – asksol

+1

Beachten Sie auch, dass die Überwachung nicht für alle Broker funktioniert. Nur diejenigen, die 'Fanout' Unterstützung in dieser Tabelle haben, tun: http://kombu.readthedocs.org/en/latest/introduction.html#transport-comparison – asksol

10

Verwandte Frage richtige Antwort ist here.

Sie sollten eigentlich laufen

python manage.py celery worker -E 

und

python manage.py celerycam 

Nach dass Aufgaben Ergebnisse werden in admin (Djcelery> Aufgaben)

0

Verschieben der Config-Update zum Beispiel angezeigt werden
app.conf.update (CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend')

bis zum Ende der Datei celery.py hat für mich den Trick.