Сейчас я использую сельдерей для периодических c задач. Я новичок в сельдерее. У меня двое рабочих работают в двух разных очередях. Один для медленных фоновых заданий и один для очереди пользователя заданий в приложении.
Я отслеживаю свои задачи в datadog, потому что это простой способ подтвердить, что мои рабочие работают должным образом.
Что я хочу сделать, так это после завершения каждой задачи записывать, в какой очереди задача была завершена.
@after_task_publish.connect()
def on_task_publish(sender=None, headers=None, body=None, **kwargs):
statsd.increment("celery.on_task_publish.start.increment")
task = celery.tasks.get(sender)
queue_name = task.queue
statsd.increment("celery.on_task_publish.increment", tags=[f"{queue_name}:{task}"])
Следующая функция - это то, что я реализовал после исследования документации по сельдерею и некоторых других. StackOverflow публикует сообщения, но он не работает должным образом. Я получаю первое приращение statsd, но оставшийся код не выполняется.
Мне интересно, есть ли более простой способ проверить внутри / после завершения каждой задачи, какая очередь обрабатывала задачу.