我有机会再次使用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但仍然出现错误。套接字库是否有任何变化,或者它只是一个错误?
答案 0 :(得分:1)
此错误无害且可预期。问题是你链接到的要点并不知道特定于Windows的错误代码(第24行检查EWOULDBLOCK和EAGAIN,但它也应该使用WSAEWOULDBLOCK)。
由于写了这个要点,Tornado已经获得了一些新的实用工具来使这更容易。如果您正在使用IOStreams
,则可以使用tornado.tcpserver.TCPServer
接受您的连接,或者如果您想继续使用普通套接字,则可以使用较低级别的tornado.netutil.add_accept_handler
。