python: запуск команды в фоновом режиме - PullRequest
3 голосов
/ 10 ноября 2011

У меня довольно сложная работа по генерации отчетов, которую нужно создавать, используя несколько таблиц.Окончательный отчет создается в листе Excel. Процесс занимает от 10 до 20 минут.

Мы предоставили клиенту веб-приложение Django.Проблема возникает только в том случае, если клиент запрашивает отчет, мы генерируем URL-адрес, и это занимает много времени, и это проблема, связанная с пользовательским интерфейсом.

Я бы хотел, чтобы задача выполнялась позади, а когда закончится, он может отправить клиенту ссылку, с отчетом.Какова правильная стратегия и библиотеки для использования?

Ответы [ 2 ]

4 голосов
/ 10 ноября 2011

Вы можете использовать http://celeryproject.org/,, он работает как шарм, имеет хорошую интеграцию с Django, он очень хорошо документирован и используется многими.

1 голос
/ 10 ноября 2011

Может быть, программа ниже поможет вам.

background.py

import subprocess

def background_execute(command):
    # launching the command
    p1 = subprocess.Popen(command,shell=True,stdout=True)
    p1.wait()
    print "Wait over, child exits"
    <Here you can add code to send mail>

Использование:

background_execute(["python sleep.py"])

sleep.py

import time

print "I am in sleep script, and will sleep for 10 sec"
time.sleep(10)
print "exit from child"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...