在接受套接字时获取BlockingIOError(WinError 10035)

时间:2016-10-09 20:52:16

标签: python sockets tornado nio

我有机会再次使用Python,但这次我决定将Python 3.5带到我的旅程中。

我不得不使用Tornado从Python 2.7到3.5移植一个工作的非阻塞套接字服务器。使用相同的源代码,但这次它根本不起作用。

每当我使用[WinError 10035] A non-blocking socket operation could not be completed immediately on send接受套接字连接时,我都会收到socket.accept(),而我仍然无法弄清楚原因。

尝试使用示例code that I've found a few years ago on GitHub Gist但仍然出现错误。套接字库是否有任何变化,或者它只是一个错误?

1 个答案:

答案 0 :(得分:1)

此错误无害且可预期。问题是你链接到的要点并不知道特定于Windows的错误代码(第24行检查EWOULDBLOCK和EAGAIN,但它也应该使用WSAEWOULDBLOCK)。

由于写了这个要点,Tornado已经获得了一些新的实用工具来使这更容易。如果您正在使用IOStreams,则可以使用tornado.tcpserver.TCPServer接受您的连接,或者如果您想继续使用普通套接字,则可以使用较低级别的tornado.netutil.add_accept_handler