В Docker-контейнере FastAPI есть фоновые задачи AsyncIO. Kubernetes завершает Pod, а часть операций ещё пишет результаты в PostgreSQL. Что сделаешь первым, чтобы не потерять работу при остановке?

Сначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.

Короткий ответ

Что ответить на собеседовании

Сначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.

Подробный разбор

Ответ с пояснениями

Сначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.

Проверьте доставку SIGTERM основному процессу и shutdown приложения: ожидайте активные задачи в пределах согласованного grace period, корректно обрабатывайте отмену. Увеличение terminationGracePeriodSeconds даёт время, но не спасает от аварии узла или SIGKILL. Долговечную работу перенесите из случайных create_task() в устойчивые задания с идемпотентным commit и подтверждением после него. Незавершённые операции должны подхватываться повторно, а не исчезать вместе с памятью процесса.

Источник: kubernetes.io.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее