Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to properly configure djcelery results backend to database

I'm trying to setup djangocelery to store task results in the databse.

I set:

CELERY_RESULT_BACKEND = 'djcelery.backends.database.DatabaseBackend'

then I synced and migrated the db (no errors).

Celery is working and tasks get processed (I can get the results), but admin shows there is no tasks. In the database are two tables celery_taskmeta and djcelery_taskmeta. First one is holding the results and second one is displayed in admin. Anyone has insight how to configure it properly?

like image 418
jb. Avatar asked May 20 '12 11:05

jb.


1 Answers

Check the doc, when you use djcelery, set CELERY_RESULT_BACKEND="database" or don't even bother to write this line because djcelery sets it by default.

The result is stored in celery_taskmeta table, you should register djcelery.models.TaskMeta to admin by yourself:

# 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)
like image 79
okm Avatar answered Oct 14 '22 19:10

okm