当我尝试强制断开用户与自定义Python服务器的连接时,出现了崩溃错误。 我正在使用asyncore和asynchat类。
但是当我想像这样强制断开连接时
asynchat.async_chat.close (self)
我收到了这个错误:
asyncore.loop()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.py", line 216, in loop
poll_fun(timeout, map)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.py", line 145, in poll
r, w, e = select.select(r, w, e, timeout)
select.error: (9, 'Bad file descriptor')
但仅限于Python Mac。在Windows上没问题......
asyncore.py类的代码源中有一个execption。但是服务器崩溃了。
try:
r, w, e = select.select(r, w, e, timeout)
except select.error, err:
if err.args[0] != EINTR:
raise
else:
return
太奇怪了......
答案 0 :(得分:2)
我刚在Google上发现了一个主题:http://bytes.com/topic/python/answers/589612-asyncore-select-statement-problem
此问题仅在OS X上发生。
修改/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.py
并将use_poll
的默认设置从False
设置为True
:
第207行:
def loop(timeout=30.0, use_poll=False, map=None, count=None):
到
def loop(timeout=30.0, use_poll=True, map=None, count=None):