celery / django-celery-results

Celery result back end with django
Other
696 stars 206 forks source link

Fix for missing periodic task name #445

Closed ntindicator closed 1 month ago

ntindicator commented 1 month ago

Fix for issue #376. The message broker Rabbitmq isn't picking up the periodic_task_name when it's passed as a keyword arg to task.apply_async() in django-celery-beat. If it's added to the headers in apply_async() it becomes available in the request object in django-celery-results. For this change to work the following commit also needs to be merged, otherwise it won't get passed by django-celery-beat.

If the task isn't triggered by django-celery-beat, but is done with code, such as using delay() or apply_async(), it will be missing, unless it's added to the headers in apply_async(). delay() doesn't support the extra options. E.g. When triggering a child task with delay() Periodic Task Name was missing in the Task Results.

These changes haven't been tested with Redis or any other message broker, only rabbitmq. CELERY_RESULT_EXTENDED was set to True in the settings. Tested with: celery==5.4.0 django-celery-beat==2.7.0 django-celery-results==2.5.1 Django==4.2.16 rabbitmq==4.0.2