@redduckrobot

Какие питоновские технологии выбрать для реал-тайм уведомлений на сайте полученные через стороннее API?

Здравствуйте, ковыряюсь с пет-проектом, захотелось расширить функционал и столкнулся с проблемой выбора технологий. Для начала опишу как это работает, а ниже опишу проблемы с которыми столкнулся.

Работает в данный момент это так:
  1. Запускается сервер Flask в связке с socketio
  2. Вместе с этими запускается фоновый процесс
  3. Этот фоновый процесс обращается к стороннему API (обновление происходит раз ~1 сек.)
  4. Полученные данные обрабатываются и отправляются на веб-страничку посредством socketio.emit()


По итогу пришел к выводу что котлеты с мухами очень плохо уживаются и нужно разнести задачи. К тому же хотелось бы добавить БД для выборочного логирования полученных данных.

Для начала добавил SQLite и очень сильно просел по скорости (было: 2-3 секунды в обновлении, стало 5+) — это критично, в данном проекте все замедления в получении данных должны быть сведены к минимуму. В выборе другой БД — почитал интернеты и решил остановится на MongoDB, связей между таблицами никаких не предвидится нужно только чертовски быстро записывать и читать.

Ну и дальше стал вопрос как это дело запустить параллельно. По итогу прихожу к такой схеме: получение с API, обработку и запись в БД отдать одному приложения и связать его с Flask через Celery и socketio.

Самое важное — "свежесть" данных на веб-странице. Что скажете про выбор именно MongoDB, Flask, Celery и socketio? Возможно какие-то другие порекомендуете?

Спасибо!
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ответы на вопрос 1
astec
@astec
Разработчик https://debtstracker.io/
Чтобы быстро писать и читать вам нужна не база данных, а очередь сообщений (message queue).

Их тоже много разных и бесплатных тоже - искать open source message queue.

Можно использовать message queue as a service. Например Amazon SQS. Или https://www.iron.io/platform/ironmq/. Их тоже много.

Я в своём приложении, которое хостится на AppEngine использую их бесплатный task queue который дёргает http адрес - очень доволен. Там так же можно указывать задержку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы