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 クラスのコード ソースに execption があります。しかし、サーバーがクラッシュしています。

  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 でのみ発生します。

からへ/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.pyのデフォルトを変更して設定します。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 に答える