Python,asyncore,asynchat,Python 2.7.3上的错误Mac只有错误的文件描述符

时间:2012-06-08 00:23:19

标签: python

当我尝试强制断开用户与自定义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

太奇怪了......

1 个答案:

答案 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):