jsh*_*jsh 10 python sockets asynchronous synchronous socketserver
感谢迄今为止的有趣回应.根据上述回复,我稍微改变了我的问题.
猜测我真正需要知道的是socketserver而不是设计用于处理延迟和压力时期的直接套接字库,即它是否有其他机制或功能可以证明其隐式广告状态为"服务器".或者它只是稍微容易使用?
每个人似乎都在推荐socketserver,但我仍然不完全清楚为什么,而不是套接字.
谢谢!!!
我已经在python中基于标准套接字库构建了一些服务器程序 http://docs.python.org/library/socket.html
我注意到他们似乎工作得很好,除了没有负载他们有一段时间后会睡觉的倾向.我想这可能不是在生产中的问题(毫无疑问,将会有大量的其他问题),但我会想知道,如果我使用正确的代码工作在这里.
环顾四周,我看到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,它肯定更可靠.如果有人想出了低级别的解释,请告诉我...谢谢!
套接字模块是一个非常低级的模块,用于发送和接收数据包.如文档中所述,它"提供对BSD套接字接口的访问".
如果你想要更精细的东西,有"socketserver"可以为你处理血腥细节,但它仍然是相对较低的水平.
最重要的是,你可以找到一个HTTP服务器,有或没有CGI,XML-RPC服务器,等等.这些是框架,通常意味着他们的代码调用您的代码.它使事情变得更简单,因为你只需要填补一些"空白"以拥有一个完全正常工作的服务器,但它也意味着你对它的作用有一点点控制.
如果你只需要socketserver的功能,我可能会选择它,除非你想出于某种原因重新发明轮子(并且总是有充分的理由设计新轮子,例如了解它是如何工作的).
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |