我只是想知道Python有哪些网络库可用于构建TCP / IP服务器。我知道Twisted可能会跳到脑海,但文档看起来很稀疏,邋and,散落在我身上。
另外,使用Twisted甚至比使用select.select()滚动我自己的服务器有好处吗?
答案 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)