感谢迄今为止有趣的回应。根据上述回答,我稍微改变了我的问题。
猜猜我真正需要知道的是,socketserver 与设计用于处理延迟和压力时期的直接套接字库相反,即它是否具有其他机制或功能来证明其作为“服务器”的隐含广告状态是合理的?还是只是更容易使用?
每个人似乎都在推荐socketserver,但我仍然不完全清楚为什么,而不是socket。
谢谢!!!
我已经基于标准套接字库 http://docs.python.org/library/socket.html在 python 中构建了一些服务器程序
我注意到它们似乎工作得很好,只是在没有负载的情况下它们会在一段时间后进入睡眠状态。我想这可能不是生产中的问题(毫无疑问会有很多其他问题),但我想知道我是否在这里使用了正确的代码来完成这项工作。
环顾四周,我看到 python 还提供了一个 socketserver 库 - http://docs.python.org/library/socketserver.html
套接字库提供了侦听多个连接的能力,通常最多 5 个。
根据socketserver页面,它的服务是同步的,即阻塞,但可以通过线程支持异步行为。我确实注意到它能够维护一个请求队列,默认值最多为 5 个请求......所以那里可能没有太大区别。
我还读到 Twisted 在后台运行 socketserver。虽然我宁愿不进入 Twisted 大小的野兽,除非它是值得的。
所以我的问题是,socketserver 是否比 socket 更健壮?如果是这样,为什么?
(你怎么知道?)
顺便说一句,socketserver 是建立在 python 的套接字之上还是完全独立的?
最后,作为奖励,如果有人知道有人会做错什么以致标准插座“睡着”,请随时加入。
哦,我在这里说的是 python 2.x 而不是 3.x,如果这有区别的话。
谢谢大家!
jsh
好吧,我没有技术答案,但我已经按照人们的建议实施了 SocketServer,它肯定更可靠。如果有人提出低级解释,请告诉我......谢谢!