Используя сельдерей (3.1.8 +) с django 1.6, все задачи определены для игнорирования результатов (это правильный синтаксис?)
@shared_task(ignore_result=True)
def somefunc():
pass
Когда я смотрю на очереди rabbitmq, я вижу все больше очередей, созданных сельдереем, с такими именами, как:
19926fa9965e40c19ed9640c2b42ce1e
и содержать одно сообщение (похожее на следующее):
correlation_id: 19926fa9-965e-40c1-9ed9-640c2b42ce1e приоритет: 0 delivery_mode: 2 заголовки: content_encoding: бинарное content_type: применение/х-питон-сериализации Полезная нагрузка 118 байт Кодирование: base64 gAJ9cQEoVQZzdGF0dXNxAlUHU1VDQ0VTU3EDVQl0cmFjZWJhY2txBE5VBnJlc3VsdHEFTlUHdGFza19pZHEGVSQxOTkyNmZhOS05NjVlLTQwYzEtOWVkOS02 NDBjMmI0MmNlMWVxB1UIY2hpbGRyZW5xCF11Lg ==
Если я установлю сельдерей на “всегда нетерпеливый” режим, тогда проблема будет решена, но это, очевидно, не является хорошим решением для производственного сервера.
Любые подсказки? Связано ли это с опцией ignore_result? и где-то есть какая-то недостающая задача? что-то другое?
Спасибо за помощь
Я не уверен, как django или ваш код определяет @shared_task
, но вы пытались явно установить в нем очередь?
@shared_task(ignore_results=True, queue="myexamplequeue")
Это применит сообщение к myexamplequeue
всякий раз, когда вы вызываете .delay()
или .apply_async()
на somefunc
.