Постройте потоковый конвейер с адаптером источника, ограниченной очередью, пулом загрузчиков, парсерами и пакетной записью. Лимит 1000 должен действовать на все активные запросы вместе.
ASGI-сервер передаёт запрос FastAPI, а event loop исполняет coroutine-задачи до точек ожидания. Пока одна задача ждёт неблокирующий I/O, цикл может выполнять другие.
Опишите входные события, каналы доставки, гарантии и свою часть реализации. Отдельно расскажите, как сервис обрабатывал повторы, ошибки провайдера и предпочтения пользователей.
Вертикальное масштабирование увеличивает ресурсы узла, горизонтальное — число экземпляров. Монолит и микросервисы описывают границы приложения, а не автоматически определяют его производительность.
Для простого best-effort действия подходит BackgroundTasks, но важное регистрационное письмо лучше отправлять через долговечную очередь и worker. multiprocessing не решает надёжность доставки.
Повторяют временные сбои только с учётом идемпотентности: timeout, часть сетевых ошибок, 429 и некоторые 5xx. Ошибки данных, прав и постоянной конфигурации обычно требуют исправления.
Гонка возникает, если между чтением лимита и записью нового значения есть await: другая корутина может использовать тот же старый лимит. Один поток не делает такую операцию атомарной.
Частые короткие TCP-соединения расходуют эфемерные порты и оставляют TIME_WAIT. Основное решение — reuse соединений и контроль нагрузки, а не бездумное уменьшение системных таймеров.
Уточните формулировку: FastAPI — ASGI-фреймворк с поддержкой async и обычных def-обработчиков, а не просто синхронный фреймворк. Затем перечислите свой реальный опыт.
Depends объявляет зависимость обработчика FastAPI: фреймворк вызывает указанную функцию, разрешает её зависимости и передаёт результат параметру обработчика.
Надёжная схема: сохранить чек и outbox-событие в одной транзакции, доставить его через RabbitMQ, а REST-проверку выполнять с ограниченными повторами и идемпотентностью.