По порядку Junior Celery и очереди обновлено

Путь задачи Celery

Вопрос

Расставьте по порядку жизненный цикл задачи с acks_late=True.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Веб-процесс вызывает send_receipt.delay(order_id)
  2. 2
    Воркер выполняет функцию задачи
  3. 3
    Воркер получает сообщение
  4. 4
    Воркер подтверждает сообщение брокеру (ack)
  5. 5
    Сообщение сериализуется и попадает в очередь брокера
Показать ответ и разбор

Коротко

С ackslate подтверждение идёт после выполнения. Если воркер упадёт до ack, брокер повторно доставит сообщение.

Правильный порядок

  1. 1
    Веб-процесс вызывает send_receipt.delay(order_id)
  2. 2
    Сообщение сериализуется и попадает в очередь брокера
  3. 3
    Воркер получает сообщение
  4. 4
    Воркер выполняет функцию задачи
  5. 5
    Воркер подтверждает сообщение брокеру (ack)

Разбор

С acks_late подтверждение идёт после выполнения. Если воркер упадёт до ack, брокер повторно доставит сообщение. Без acks_late ack отправляется сразу после получения, до выполнения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.