我想为使用SocketServer模块的服务器的请求处理程序中的单个连接添加超时。SocketServer ThreadingTCPServer&Asyncore Dispatcher
让我先说这是我第一次尝试使用Python进行网络编程。我已经对SocketServer.BaseRequestHandler和SocketServer.ThreadingTCPServer分别进行了分类,并且设法使用一些基本的线程化TCP功能创建两个类。
但是,我想我的传入连接超时。尝试覆盖任何内置的SocketServer超时值和方法不起作用,因为文档说这只适用于分叉服务器。我设法创建了一个在X秒后触发的计时器线程,但由于处理程序线程中的阻塞recv调用的性质,这是没有用的,因为我将被迫杀死它,这是我真正的东西想避免。
因此,我的理解是,我需要一个asyncore实现,在那里获得通知并读取一定数量的数据。如果在5秒内没有发送任何数据,可以说,我想关闭该连接(我知道如何干净地做到这一点)。 我发现了一些使用socket的asyncore的例子,但是没有一个使用SocketServer。那么,我怎样才能实现asyncore & threadingTCPserver? 这可能吗? 有没有人做过?
*您可*这样做事,但我建议探索一种更简单,更有效的方法 - http://twistedmatrix.com/ - 欢迎到Python网络世界编程! :) –
让 - 保罗卡尔德龙感谢您的链接。我以前见过。在正常情况下,我会选择twistedmatrix,但这是一个非常注重安全性并且不需要开源或第三方库的客户的项目。 –
这非常可悲,逻辑无效(Python是开源和第三方)。不过,祝你的项目好运。 –