В сборке есть postgres для сохранения информации, бекенд для отображения информации, воркер для скачивания на asyncio и redis как очередь для общения между ними. Сервис был протестирован через сваггер.
Также была протестирована скорость работы:
- Скорость в синхронном формате работы для сравнения: 744 секунды
- Скорость работы в асинхронном формате: 11 секунд
Что можно еще улучшить:
- Сделать очередь через rabitmq и отправлять задачи батчами
- Перезакладывать задачи в очередь с таймаутом если получена ошибка too many requests или что-то такое, сейчас этого нет. У твиттера есть описание своих rate limit-ов
- Добавить consul для всех ключей
- Добавить orm и миграции, сейчас работа с базой сделана через asyncpg
- Покрыть сервис тестами, добавить логи