Отправка события после вызова Celery Signal

У меня есть проект Django, я вызываю задачу с именем my_task и слушаю различные сигналы, которые посылает задача. Я использую django_eventstream внутри моего проекта для отправки в поток событий. from django_eventstream import send_event

когда я слушаю встроенный сигнал сельдерея after_task_publish следующим образом

@after_task_publish.connect(sender='my_task')
def task_sent_handler(sender=None, headers=None, body=None, **kwargs):
    print("task_sent")
    message = "task_sent"
    send_event("eventchannel", "my_event", message)

сообщение отправляется в мой существующий поток событий и работает как ожидалось. оператор печати выводится в консоль веб-сервера

но когда я слушаю встроенный сигнал сельдерея task_success следующим образом

@task_success.connect(sender=my_task)
def task_success_handler(sender=None, result=None, **kwargs):
    print("task_success")
    message = "task_success"
    send_event("eventchannel", "my_event", message)

send_event не будет отправлен в мой поток событий. Оператор print будет выведен в консоль celery worker. Я пытаюсь найти причину такого поведения. В чем разница между обоими сигналами или в чем разница между обеими функциями, которые вызываются сигналами?

Используются следующие версии:

Django=3.2.6
celery=5.1.2
redis=3.5.3
django-eventstream=4.2.0
Вернуться на верх