Отправка события после вызова 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