2

当我尝试强制断开用户与我的自定义 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 类的代码源中有一个执行。但是服务器崩溃了。

  try:
        r, w, e = select.select(r, w, e, timeout)
    except select.error, err:
        if err.args[0] != EINTR:
            raise
        else:
            return

这么奇怪...

4

1 回答 1

2

我刚刚在 Google 上找到了一个帖子:http: //bytes.com/topic/python/answers/589612-asyncore-select-statement-problem

此问题仅在 OS X 上发生。

修改并设置from/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.py的默认值to :use_pollFalseTrue

第 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):
于 2012-06-08T09:28:57.837 回答