SIGTERM просит завершиться корректно, SIGINT обычно приходит при Ctrl+C, а SIGKILL нельзя перехватить. При SIGTERM сервер прекращает приём новой работы и даёт активным запросам ограниченное время.
Итератор выдаёт элементы через __next__ и завершает обход StopIteration. Генератор — удобный способ создать итератор функцией с yield, сохраняя состояние между выдачами.
The class is syntactically valid. It fails only if PostgresDB is unavailable or construction fails; injecting a database dependency also removes the hard-coded implementation.
CPython иногда переиспользует буфер строки при присваивании результата конкатенации той же локальной переменной. Но это оптимизация реализации, а не гарантированное O(1) для s = s + "next".
В обычной сборке CPython GIL позволяет только одному потоку исполнять Python-код в одном интерпретаторе одновременно. Поэтому потоки обычно не ускоряют чистые CPU-bound вычисления.
Исправьте COPY, зафиксируйте образ и зависимости, отключите DEBUG и запускайте процесс непривилегированным пользователем. Для полной воспроизводимости нужны digest и lock-файл с хешами.
Python 3.13 принёс новый REPL, экспериментальные free-threading и JIT; 3.14 — отложенные аннотации, t-строки, новые средства субинтерпретаторов и поддержку Zstandard.
Обычно event loop запускают через asyncio.run, а конкурентные корутины оформляют как Task. Управлять циклом вручную для простого приложения не требуется.