Запуск долгого процесса на сервере из приложения WSGI - PullRequest
3 голосов
/ 07 февраля 2011

Мне нужно запустить длительный процесс (30 минут) через http и получить статус, когда он работает.«Процесс» - это в основном скрипт Python, который обновляет базу данных.У меня есть следующие ограничения:

  1. Одновременно может выполняться только один экземпляр процесса.

  2. Приложение WSGI выполняется в нескольких интерпретаторах, поэтому я не могу просто сделать глобальную переменную isRunning, чтобы отслеживать ее.

  3. Мне нужна веб-страница для отслеживания процесса (состояние / прогресс)

  4. Нет, Джанго, просто чистый WSGI.

У кого-нибудь есть опыт, делающий то же самое?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

Изолируйте процесс как отдельный демон и используйте MQ или какой-либо другой IPC для выполнения его заданий.Попросите его обновить значение в базе данных по мере его продвижения и прочитать это значение на веб-странице.

1 голос
/ 07 февраля 2011

Посмотрите на использование Celery (http://celeryproject.org/) и запустите задачу вне процессов веб-приложения Python.

...