Здравствуйте!
Есть такая задача:
1. Клиент запускает обработку данных
2. Tornado принимает запрос от клиента и запускает тяжелый и долгий процесс.
Как правильно запустить этот процесс?
Сейчас все реализовано таким образом:
1. Тяжелый процесс вызывается через threads, туда параметром передается некий идентификатор
2. Далее делаются переодические запросы через js на другой url с передачей идентификатора
3. tornado делает запрос в бд, чтобы отследить прогресс (соответственно тот долгий процесс, что-то пишет в бд, используя переданный ранее идентификатор)
К сожалению, redis и тому подобное использовать нельзя.
Правильная ли такая архитектура? Может есть другие более канонические решения?
Наилучшим решением будет использование Message Queue.
В одну очередь записываете задание, вторую слушаете на предмет ответа.
Процесс читает из первой очереди и записывает во вторую.
Можно посмотреть в сторону https://www.rabbitmq.com/