Django manage.py runserver无法响应

时间:2014-08-05 16:14:16

标签: python django python-2.7

我在Mac OS X上运行一个流浪盒。虚拟机运行的是Ubuntu 12.04,包含Python 2.7和Django 1.4.5。当我启动manage.py时,我称之为:

./manage.py runserver 0.0.0.0:8000

如果我从VM中访问http://127.0.0.1:8000,我尝试过的文本浏览器会报告已发送HTTP请求,然后等待响应,直到请求超时。没有回应。

我可以像这样telnet到端口:

telnet 127.0.0.1 8000

输入随机乱码,manage.py报告如下:

127.0.0.1 - - [05/Aug/2014 17:06:26] code 400, message Bad request syntax ('asdfasdfadsfasd') 127.0.0.1 - - [05/Aug/2014 17:06:26] "asdfasdfadsfasd" 400 -

所以manage.py正在侦听该端口。但是标准HTTP请求不会在控制台或浏览器中生成manage.py的响应。

我尝试过使用不起作用的不同端口。有没有人有任何想法?

更新 一些额外的卷曲输出。

执行'curl -v http://127.0.0.1:8000'返回 '*即将连接()到127.0.0.1端口8000(#0) *尝试127.0.0.1 ...已连接

  

GET / HTTP / 1.1   User-Agent:curl / 7.22.0(i686-pc-linux-gnu)libcurl / 7.22.0 OpenSSL / 1.0.1 zlib / 1.2.3.4 libidn / 1.23 librtmp / 2.3   主持人:127.0.0.1:8000   接受: /   “

执行'curl -v http://somefakedomain'会导致 '* getaddrinfo(3)因somefakedomain失败:80 *无法解析主人'somefakedomain' *关闭连接#0 卷曲:(6)无法解析主机somefakedomain'

1 个答案:

答案 0 :(得分:2)

好的,重申我的上一篇文章。

对应用程序启动失败的Django服务进行了调用。没有错误被抛出,相反它被Sentry吸收了。那些已经在本地机器上使用VM的人已经解决了这个问题。

通过导入ipdb并调用其set_trace()函数来确定问题。从控制台,我逐步完成了应用程序,测试可能的变量并返回值,直到它拒绝继续。这使其缩小到行为不端的服务及其不再发生的错误。

代码已使用正确的try / catch块进行更新,现在可以正常处理错误。

总结一下:不是虚拟机故障,而是代码问题。