2016-10-09 3 views
0

私はPythonで再び作業する機会を得ましたが、今回はPython 3.5を私の旅に使うことに決めました。ソケットを受け入れるときBlockingIOError(WinError 10035)を取得する

私は、動作しているノンブロッキングソケットサーバを、TornadoをPython 2.7から3.5に移植しなければなりませんでした。同じソースコードを使用しましたが、今回は必要に応じて動作しません。

socket.accept()を使用してソケット接続を受け入れると、私はいつも[WinError 10035] A non-blocking socket operation could not be completed immediately on sendを取得し続けますが、それでも原因を特定できません。

code that I've found a few years ago on GitHub Gistを使用しようとしましたが、引き続きエラーが発生します。ソケットライブラリに変更がありますか、バグですか?

答えて

2

このエラーは無害であり、予期されています。問題は、リンク先の要点がWindows固有のエラーコードを知らないことです(行24ではEWOULDBLOCKとEAGAINをチェックしますが、WSAEWOULDBLOCKも使用する必要があります)。

その要点が書かれて以来、Tornadoはこれを簡単にするための新しいユーティリティを手に入れました。 IOStreamsを使用している場合は、tornado.tcpserver.TCPServerを使用して接続を受け入れることができます。また、プレーンソケットを引き続き使用する場合は、下位レベルのtornado.netutil.add_accept_handlerを使用できます。

関連する問題