Сначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.
В Docker-контейнере FastAPI есть фоновые задачи AsyncIO. Kubernetes завершает Pod, а часть операций ещё пишет результаты в PostgreSQL. Что сделаешь первым, чтобы не потерять работу при остановке?
Сначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.
Проверьте доставку SIGTERM основному процессу и shutdown приложения: ожидайте активные задачи в пределах согласованного grace period, корректно обрабатывайте отмену. Увеличение terminationGracePeriodSeconds даёт время, но не спасает от аварии узла или SIGKILL. Долговечную работу перенесите из случайных create_task() в устойчивые задания с идемпотентным commit и подтверждением после него. Незавершённые операции должны подхватываться повторно, а не исчезать вместе с памятью процесса.
Источник: kubernetes.io.