Раздел 45 · Python backend: Тарбадель

Celery по-взрослому: подтверждение, повторы, идемпотентность

middle-senior~30 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Ночью воркеры Кэш-рынка перезапускали ради новой версии. Утром у Деванны на экране заказ, за который покупатель нажал «оплатить» в 02:14. Задача ochered.charge в логе есть, строка received есть, а строки succeeded нет. И в очереди задачи тоже нет. Деньги не списаны, заказ висит неоплаченным, дрон не уехал.

В прошлом уроке Celery печатал чеки, и потерянный или лишний чек никого не волновал. С деньгами так нельзя. Сегодня разбираем, когда Celery подтверждает сообщение, почему доставка без потерь всегда означает «хотя бы один раз» и как сделать платёж, который переживает и смерть воркера, и повтор, и ответ шлюза, потерянный в сети. Это тот же разговор, что в уроке 193, где ты сам решал, когда звать XACK. Только у Celery решение уже принято за тебя, и не в твою пользу.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.