python:在后台运行命令

时间:2011-11-10 11:29:07

标签: python django

我有一个相当复杂的报告生成工作,需要通过多个表生成。最终报告在Excel工作表中创建。该过程需要10-20分钟。

我们为客户提供了一个Django Web应用程序。只有在客户端请求报告时才会发出,我们正在生成一个URL,这需要时间,并且就UI而言是一个问题。

我希望任务在后面运行,一旦结束,它可以通过报告向客户端发送链接。什么是正确的策略,以及要使用的库?

2 个答案:

答案 0 :(得分:4)

你可以使用http://celeryproject.org/,它就像一个魅力,它有很好的Django集成,它有很好的文档和很多人使用。

答案 1 :(得分:1)

可能是以下程序可以帮助您。

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"