Skip to content

Latest commit

 

History

History
58 lines (44 loc) · 3.98 KB

File metadata and controls

58 lines (44 loc) · 3.98 KB

Оптимизация асинхронности в FastAPI приложении

Выполненные изменения

  1. Модуль статистики (statistics.py)

    • Преобразованы все функции эндпоинтов в асинхронные
    • Заменены синхронные ORM-запросы на асинхронные SQL-выражения
    • Добавлены корректные await для всех асинхронных операций с БД
  2. Модуль категорий (categories.py)

    • Преобразованы функции в асинхронные
    • Заменены синхронные запросы ORM на асинхронные
    • Добавлена поддержка асинхронных транзакций (commit и refresh)
  3. Модуль пользователей (users.py)

    • Преобразованы все функции в асинхронные
    • Изменена работа с моделями (используется select, update, delete)
    • Обновлены операции с БД для асинхронной работы
  4. Модуль аутентификации (auth.py)

    • Добавлена асинхронная функция authenticate_user_async
    • Обновлены зависимости для использования асинхронной сессии БД
    • Обновлен эндпоинт токена для асинхронной работы
  5. Модуль безопасности (security.py)

    • Добавлена асинхронная функция get_current_user_async
    • Сохранены синхронные функции для совместимости
    • Обновлена функция get_current_active_user для использования асинхронной зависимости
  6. Основной модуль API (api.py)

    • Удалены упоминания неиспользуемых модулей (notifications, attachments)
    • Оптимизирована структура импортов
  7. Главный модуль приложения (main.py)

    • Удалено подключение async_tickets_router, т.к. все роутеры теперь асинхронные

Преимущества выполненных изменений

  1. Повышение производительности и масштабируемости:

    • Неблокирующая работа с БД позволяет обрабатывать больше запросов одновременно
    • Эффективное использование ресурсов сервера
    • Улучшенная работа с подключениями к БД
  2. Оптимизация потребления памяти:

    • Асинхронные операции требуют меньше потоков и ресурсов
    • Управление пулом соединений стало более эффективным
  3. Более чистый и поддерживаемый код:

    • Единообразный стиль асинхронного программирования
    • Последовательный подход к работе с БД
    • Удалены устаревшие и неиспользуемые компоненты

Дальнейшие возможности для оптимизации

  1. Преобразование оставшихся синхронных эндпоинтов (tickets, equipment)
  2. Добавление backpressure механизмов для защиты от перегрузки
  3. Оптимизация сложных запросов с использованием материализованных представлений или денормализации
  4. Внедрение асинхронных очередей для обработки длительных задач