我使用Django农业开发服务器来启动一个守护进程,它从views.py执行所有的命令,但网页挂。 守护程序启动正常,但网页挂需要修复。 我在红帽企业Linux 6.3的工作。
为了确保这不是我或我进行以下测试我的后台程序的错误:
1)我创造了新的Django项目“djtesting”,其中用下面的代码创建一个views.py文件(启动httpd守护进程):
from django.http import HttpResponse
import subprocess
def hello(request):
res = subprocess.call("/usr/sbin/httpd")
return HttpResponse("Testing.")
2)增加此功能urls.py:
from django.conf.urls.defaults import patterns, include, url
from djtesting.views import hello
urlpatterns = patterns('',
('^hello/$', hello),
)
3)然后,我开始的Web服务器“蟒蛇manage.py runserver命令192.168.1.226:8000”,打开网页,用“ http://192.168.1.226:8000/hello/的浏览器”。 它显示“测试”消息,然后挂起(开始加载挂在这个)虽然守护进程正常启动。 但是,如果停止与守护“/etc/init.d/httpd停止”网页停止加载。 看来,服务器等待,直到守护进程完成的工作,但我只需要启动它,而无需等待,直到它结束。
我试过其他的方式来运行一个后台程序(每门课程的一个尝试一条线),但同样差的结果:
thread.start_new_thread(os.system, ('/usr/sbin/httpd',))
process = subprocess.Popen("/usr/sbin/httpd", stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
res = subprocess.call(["/usr/sbin/httpd", "&"])
res = subprocess.Popen("/usr/sbin/httpd")
res = os.system("/usr/sbin/httpd &")
res = os.spawnl(os.P_NOWAITO, '/usr/sbin/httpd', '&')
我发现类似的问题,但因为我RHEL6.3下工作,我不能使用start-stop-daemon的: 为什么挂在网页开始后的第底层服务器上的后台?