用于构建TCP服务器的优秀Python网络库?

时间:2009-01-14 03:51:14

标签: python networking twisted

我只是想知道Python有哪些网络库可用于构建TCP / IP服务器。我知道Twisted可能会跳到脑海,但文档看起来很稀疏,邋and,散落在我身上。

另外,使用Twisted甚至比使用select.select()滚动我自己的服务器有好处吗?

5 个答案:

答案 0 :(得分:10)

我必须同意文档有点简洁,但是教程可以帮助您快速启动并运行。

http://twistedmatrix.com/projects/core/documentation/howto/tutorial/index.html

Twisted的基于事件的编程范例及其推断可能在开始时有点奇怪(对我来说)但是值得学习曲线。

你会比你编写自己的框架更快地启动和运行更复杂的东西,这也意味着更少的东西可以解决bug,因为Twisted已经过生产验证。

我真的不知道另一个可以提供Twisted可以提供的框架,因此即使文档不适合胆小的人,我的投票也肯定会用于Twisted。

我同意Greg的观点,SocketServer是一个不错的中间环节,但依赖于您的应用程序的目标受众及其设计,您可能会有一些很好的东西在Twisted中期待(PerspectiveBroker非常有用,让我想到 - http://twistedmatrix.com/projects/core/documentation/howto/pb-intro.html

答案 1 :(得分:6)

标准库包括SocketServer和相关模块,可能足以满足您的需求。这是一个复杂的框架(如Twisted)和滚动自己的select()循环之间的良好中间地带。

答案 2 :(得分:1)

如果您不愿意使用Twisted,可能需要查看SocketServer.ThreadingTCPServer。它很容易使用,而且足够用于许多目的。

对于大多数情况,Twisted可能会更快更可靠,所以如果可以的话,我会记录文档:)

答案 3 :(得分:1)

只需添加一个答案来重复其他海报 - 使用Twisted是值得的。没有理由再编写另一个TCP服务器,它最终的工作效果不如使用twisted的服务器。唯一的原因是如果编写自己的更快,开发人员明智,但如果你只是咬紧牙关,现在学习扭曲,你的未来项目将受益匪浅。而且,正如其他人所说,如果从一开始就使用扭曲,你将能够做更复杂的事情。

答案 4 :(得分:1)

我尝试了3种方法:

  • 编写我自己的select()循环framework(几乎死了,我不一定推荐它。)
  • 使用SocketServer
  • Twisted

我使用SocketServer来获得流量相当低的内部Web服务。用于相当高流量的内部日志记录服务。两者都表现得非常好,并且在生产中看起来非常可靠。对于任何需要高效的东西,我认为Twisted的东西要好得多,但要让你的头脑绕过架构还有很多工作要做。