我在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'
答案 0 :(得分:2)
好的,重申我的上一篇文章。
对应用程序启动失败的Django服务进行了调用。没有错误被抛出,相反它被Sentry吸收了。那些已经在本地机器上使用VM的人已经解决了这个问题。
通过导入ipdb并调用其set_trace()函数来确定问题。从控制台,我逐步完成了应用程序,测试可能的变量并返回值,直到它拒绝继续。这使其缩小到行为不端的服务及其不再发生的错误。
代码已使用正确的try / catch块进行更新,现在可以正常处理错误。
总结一下:不是虚拟机故障,而是代码问题。