2016-03-19 5 views
1

Я пишу небольшой веб-сервер, используя флягу, которую необходимо выполнить следующие действия:колб и долго выполняющиеся задачи

  1. На первом запросе, служат основной страницы и пнуть длинный (15-60 вторая) задача обработки данных. Задача обработки данных запрашивает второй сервер, который я не контролирую, обновляет локальную базу данных и затем выполняет некоторые вычисления по результатам, которые будут отображаться на веб-странице.
  2. Страница вызывает несколько запросов AJAX, которые зависят от частей результата от длинной задачи, поэтому мне нужно подождать, пока обработка не будет выполнена.
  3. Последующие запросы на первую страницу, в идеале, повторно использовать результат предыдущего запроса, если они приходят в то время как задача обработки продолжается (или даже вскоре после этого)

Я попытался с помощью колбы-кэш (в частности SimpleCache) , но столкнулся с проблемой, так как кажется, что тайник замачивает результат, когда я действительно предпочитаю хранить точный объект.

Я полагаю, что я мог бы переписать то, что я кэширую, чтобы разборчиво, а затем реализовать один рабочий поток для обработки.

Есть ли еще более эффективный способ обработки такого рода рабочих процессов?

ответ

2

Я думаю, что лучший способ для длительной обработки данных - это что-то вроде Celery.

  1. Отправить запрос для запуска задачи и получения идентификатора задачи.
  2. Периодически отправляйте запросы ajax для проверки выполнения задачи и получения результата выполнения задачи.
Смежные вопросы