(是否)python socketserver优于常规套接字对象的性能优势?

时间:2011-06-30 19:47:56

标签: python sockets asynchronous synchronous socketserver

感谢迄今为止的有趣回应。根据上述回复,我稍微改变了我的问题。

猜测我真正需要知道的是socketserver而不是设计用于处理延迟和压力时期的直接套接字库,即它是否有其他机制或功能来证明其隐式广告状态作为“服务器”,还是稍微容易使用?

每个人似乎都在推荐socketserver,但我还是不完全清楚为什么,而不是套接字。

感谢!!!

  

我已经构建了一些服务器程序   python基于标准套接字   图书馆   http://docs.python.org/library/socket.html

     

我注意到它们似乎有效   很好,除了没有负载   他们有进入睡眠的倾向   过了一会儿。我想这可能不是   在生产中是一个问题(毫无疑问   会有很多其他问题)   但我想知道我是不是   在这里使用正确的代码。

     

环顾四周,我也看到了那个蟒蛇   提供一个socketserver库 -   http://docs.python.org/library/socketserver.html

     

socket 库提供了   倾听多重的能力   连接,通常最多5个。

     

根据 socketserver 页面,   它的服务是同步的,即   阻止,但有人可能支持   通过线程的异步行为。   我注意到它有能力   维护一个请求队列,用   默认值最多5个请求......所以   也许那里差别不大。

     

我也读过Twisted跑   引擎盖下的socketserver。虽然我   宁可不要陷入野兽之中   扭曲的大小,除非它会发生   值得。

     

所以我的问题是,是socketserver   比插座更强大?如果是这样,为什么?

     

(你怎么知道?)

     

顺便说一下,是socketserver构建的   python插座的顶部还是它   完全分开?

     

最后,如果有人知道,作为奖励   什么人可能做错了   请问标准插座“睡着了”   也可以随意加入。

     

哦,我说的是python 2.x   如果那是一个,那么这里比3.x   差。

     谢谢大家!

     

JSH


好吧,我没有技术答案,但我已根据人们的建议实施了SocketServer,它肯定更可靠。如果有人想出了低级别的解释,请告诉我...谢谢!

1 个答案:

答案 0 :(得分:9)

套接字模块是用于发送和接收数据包的极低级模块。如文档中所述,它“提供对BSD套接字接口的访问”。

如果你想要更精细的东西,有“socketserver”可以为你处理血腥细节,但是它仍然是相对较低的水平。

除此之外,您还可以找到包含或不包含CGI的HTTP服务器,XML-RPC服务器等。这些是框架,这通常意味着他们的代码会调用您的代码。它使事情变得更简单,因为你只需要填补一些“空白”以拥有一个完全正常工作的服务器,但它也意味着你对它的作用有一点点控制。

如果你只需要socketserver的功能,我可能会选择它,除非你想出于某种原因重新发明轮子(并且总是有充分的理由设计新轮子,例如了解它是如何工作的)。