How to properly configure djcelery results backend to database
Solution 1
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)
Solution 2
Related question with right answer is here.
You should actually run
python manage.py celery worker -E
and
python manage.py celerycam
After that tasks results will be displayed in admin (Djcelery › Tasks)
![jb.](https://i.stack.imgur.com/pjG21.jpg?s=256&g=1)
jb.
Updated on June 30, 2022Comments
-
jb. almost 2 years
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
anddjcelery_taskmeta
. First one is holding the results and second one is displayed in admin. Anyone has insight how to configure it properly? -
jb. about 12 yearsI changed
CELERY_RESULT_BACKEND
to"database"
but still id doesn't work.I have TaskState table in admin in application djcelery, and other models from that app registered in the admin are working --- worker model shows connected workers. -
asksol about 12 yearsTaskState is for monitoring: docs.celeryproject.org/en/latest/userguide/…
-
asksol about 12 yearsAlso note that monitoring does not work for all brokers. Only those that have 'fanout' support in this table does: kombu.readthedocs.org/en/latest/…