我正在运行Python 2.7.3和Django 1.5.8。我正在尝试为新安装“它工作”。我从Chrome获得错误324 :
Unable to load the webpage because the server sent no data.
Error code: ERR_EMPTY_RESPONSE
当我杀死服务器时,我得到以下追溯:
0 errors found
June 02, 2014 - 06:39:55
Django version 1.5.8, using settings 'fed1.settings.dev'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
♥Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x19fd950>>
Traceback (most recent call last):
File "/home/vagrant/fed1-venv/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 115, in inner_run
ipv6=self.use_ipv6, threading=threading)
File "/home/vagrant/fed1-venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 186, in run
httpd.serve_forever()
File "/usr/lib/python2.7/SocketServer.py", line 225, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
AttributeError: 'NoneType' object has no attribute 'select'
我在某处读到过这个错误与Python 2.5.1有关并且在2.5.2中消失了。我现在找不到。它一定是在code.djangoproject.com中的某个地方,但也许这不是同一个问题。
我看到How to 'clear' the port when restarting django runserver人们说服务器已经在运行,所以我尝试了这个解决方案:
(fed1-venv)vagrant@precise64:/vagrant/fed1$ ps aux | grep -i manage
vagrant 10113 0.0 0.2 11676 940 pts/0 S+ 14:57 0:00 grep --color=auto -i manage
然后尝试将它带到前台杀死但是:
(fed1-venv)vagrant@precise64:/vagrant/fed1$ fg
bash: fg: current: no such job
这也不是我的问题。
Django - Strange behavior using static files使用网址格式解决了类似的错误 - 但我还没有。我只是想让'它奏效'。我看到的大多数关于此错误的人都已经在生产中启动并运行了网站。
我看了socketserver.py
,但我还不够先进,无法解释。
答案 0 :(得分:4)
不要担心异常,你可以放心地忽略它。你的服务器已经退出了,虽然有点混乱。
在关闭时,Python会清除全局名称,以防止循环依赖性阻止最终化。它通过重新绑定它们None
来实现。
您正在使用键盘中断(CTRL-C)关闭服务器,从而触发完成。与此同时,serve_forever
线程仍在运行它的套接字轮询循环,但select
模块中的SocketServer
全局已经被反弹。因此,select.select()
的查找失败。
如果这困扰你,请升级到Python 3.4。根据{{3}},此版本不再将全局变量设置为None
(在大多数情况下);见Safe Object Finalization。
至于您的Chrome错误代码和其他问题,某些内容已绑定到您尝试用于Django的端口。这与您在select.select()
电话中看到的例外情况完全不同。可能是另一个软件正在抓住该端口,这些东西不响应HTTP请求(导致Chrome错误响应)。
请参阅PEP 442(Linux)或Determining what process is bound to a port(Mac)以解决该问题。