По порядку Junior Celery и очереди обновлено
Путь задачи Celery
Вопрос
Расставьте по порядку жизненный цикл задачи с acks_late=True.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Веб-процесс вызывает
send_receipt.delay(order_id) - 2Воркер выполняет функцию задачи
- 3Воркер получает сообщение
- 4Воркер подтверждает сообщение брокеру (ack)
- 5Сообщение сериализуется и попадает в очередь брокера
Показать ответ и разбор
Коротко
С ackslate подтверждение идёт после выполнения. Если воркер упадёт до ack, брокер повторно доставит сообщение.
Правильный порядок
- 1Веб-процесс вызывает
send_receipt.delay(order_id) - 2Сообщение сериализуется и попадает в очередь брокера
- 3Воркер получает сообщение
- 4Воркер выполняет функцию задачи
- 5Воркер подтверждает сообщение брокеру (ack)
Разбор
С acks_late подтверждение идёт после выполнения. Если воркер упадёт до ack, брокер повторно доставит сообщение. Без acks_late ack отправляется сразу после получения, до выполнения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.