Здравствуйте, ковыряюсь с пет-проектом, захотелось расширить функционал и столкнулся с проблемой выбора технологий. Для начала опишу как это работает, а ниже опишу проблемы с которыми столкнулся.
Работает в данный момент это так:
- Запускается сервер Flask в связке с socketio
- Вместе с этими запускается фоновый процесс
- Этот фоновый процесс обращается к стороннему API (обновление происходит раз ~1 сек.)
- Полученные данные обрабатываются и отправляются на веб-страничку посредством socketio.emit()
По итогу пришел к выводу что котлеты с мухами очень плохо уживаются и нужно разнести задачи. К тому же хотелось бы добавить БД для выборочного логирования полученных данных.
Для начала добавил SQLite и очень сильно просел по скорости (было: 2-3 секунды в обновлении, стало 5+) — это критично, в данном проекте все замедления в получении данных должны быть сведены к минимуму. В выборе другой БД — почитал интернеты и решил остановится на MongoDB, связей между таблицами никаких не предвидится нужно только чертовски быстро записывать и читать.
Ну и дальше стал вопрос как это дело запустить параллельно. По итогу прихожу к такой схеме: получение с API, обработку и запись в БД отдать одному приложения и связать его с Flask через Celery и socketio.
Самое важное — "свежесть" данных на веб-странице. Что скажете про выбор именно MongoDB, Flask, Celery и socketio? Возможно какие-то другие порекомендуете?
Спасибо!