首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django web服务器在启动守护程序后挂起

Django web服务器在启动守护程序后挂起
EN

Stack Overflow用户
提问于 2012-10-10 08:30:41
回答 1查看 505关注 0票数 2

我使用Django开发服务器启动了一个守护进程,它执行来自views.py的所有命令,但网页挂起。守护进程正在正常启动,但需要修复网页挂起问题。我在Red Hat Enterprise Linux 6.3下工作。

为了确保这不是我或我的守护进程的错误,我执行了以下测试:

1)我创建了新的Django项目"djtesting",其中使用以下代码创建了一个views.py文件(它将启动httpd守护进程):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.http import HttpResponse
import subprocess

def hello(request):
    res = subprocess.call("/usr/sbin/httpd")
    return HttpResponse("Testing.")

2)将此函数添加到urls.py中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.conf.urls.defaults import patterns, include, url
from djtesting.views import hello

urlpatterns = patterns('',
    ('^hello/$', hello),
    )

3)然后我用"python manage.py runserver 192.168.1.226:8000“启动web服务器,并在浏览器中用"http://192.168.1.226:8000/hello/”打开网页。它显示“测试”消息,然后挂起(开始加载并挂起),尽管守护进程正常启动。但是,如果使用"/etc/init.d/httpd stop“停止守护程序,则网页将停止加载。服务器似乎在等待守护进程完成工作,但我只需要启动它,而不是等到它结束。

我尝试了另一种方法来运行守护进程(当然,每次尝试一行),但同样效果不佳:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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下工作:Why hangs the web page after it started a daemon on the underlying server?

EN

回答 1

Stack Overflow用户

发布于 2012-10-15 22:34:16

subprocess.call等待返回值,所以我很惊讶你能得到返回值。尝试使用subprocess.Popen,因为这会产生进程,然后将控制权返回给您,而不是等待结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12815133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文