Skip to content

perf: add request timing middleware to identify slow routes #203

@axisrow

Description

@axisrow

Симптом

Все роуты веб-интерфейса работают заметно медленно. Причина не установлена — нет инструментирования.

Что сделано

Добавлен TimingMiddleware + страница /debug/timing:

  • src/web/timing.py — класс TimingBuffer (кольцевой буфер 200 записей)
  • TimingMiddleware в app.py — измеряет time.monotonic() вокруг каждого запроса, записывает в буфер; логирует WARNING: SLOW ... для запросов >500 ms
  • /debug/timing — таблица последних запросов, отсортированных по убыванию длительности; строки >1000 ms подсвечены красным, 500–999 ms — жёлтым

Следующий шаг

После сбора данных через /debug/timing — оптимизация узких мест:

  • Индексы БД (channel_stats, messages)
  • Кэширование тяжёлых агрегатов (get_channels_with_counts, get_stats)
  • Устранение N+1 запросов в list_for_page()
  • Оптимизация trend_service (загрузка всех сообщений в память)

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions