Задать вопрос

Как общаться между процессами?

Здравствуйте!
Есть такая задача:
1. Клиент запускает обработку данных
2. Tornado принимает запрос от клиента и запускает тяжелый и долгий процесс.

Как правильно запустить этот процесс?

Сейчас все реализовано таким образом:
1. Тяжелый процесс вызывается через threads, туда параметром передается некий идентификатор
2. Далее делаются переодические запросы через js на другой url с передачей идентификатора
3. tornado делает запрос в бд, чтобы отследить прогресс (соответственно тот долгий процесс, что-то пишет в бд, используя переданный ранее идентификатор)

К сожалению, redis и тому подобное использовать нельзя.
Правильная ли такая архитектура? Может есть другие более канонические решения?
  • Вопрос задан
  • 604 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
devspec
@devspec
Помогло? Отметь решением
Наилучшим решением будет использование Message Queue.
В одну очередь записываете задание, вторую слушаете на предмет ответа.
Процесс читает из первой очереди и записывает во вторую.
Можно посмотреть в сторону https://www.rabbitmq.com/
Ответ написан
Комментировать
@immaculate
Программист-путешественник
Насколько я понимаю, можно использовать PostgreSQL LISTEN/NOTIFY (если используется PostgreSQL): https://www.postgresql.org/docs/current/static/sql...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы