2009-01-14 45 views
10

我只是想知道哪些网络库有用于构建TCP/IP服务器的Python。我知道Twisted可能会想到,但文档看起来很稀少,草率,并散布给我。用于构建TCP服务器的良好Python网络库?

此外,将使用Twisted甚至有利于滚动我自己的服务器与select.select()?

回答

10

我必须同意文档有点简洁,但教程能让你快速启动并运行。

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

扭曲的基于事件的编程范式,它的defereds可能是在一开始有点怪异(对我来说),但它是值得的学习曲线。

与起草自己的框架相比,您可以更快地完成更复杂的任务,并且这也意味着更少的bug追捕,因为Twisted经过了大量生产验证。

我真的不知道另一个框架可以提供和Twisted一样多的功能,所以我的投票肯定会用于Twisted,即使这些文档不适合心脏病患者。

我与格雷格同意的SocketServer是一个很好的中间地带,但具体取决于应用程序的目标受众和它的设计,你可能有一些不错的东西,以期待在扭曲(该PerspectiveBroker这是非常有用的来头脑 - http://twistedmatrix.com/projects/core/documentation/howto/pb-intro.html

6

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

+0

看来您需要使用线程来支持多个客户端处理。难道创建/销毁所有这些线程的开销使它毫无价值?不会选择()会更好吗? – ryeguy 2009-01-14 04:11:04

1

如果你不愿意使用扭曲,你可能想看看SocketServer.ThreadingTCPServer。这很容易使用,而且很多用途的足够

对于大多数的情况下,扭转的可能会是更快,更可靠,所以我肚子里的文档,如果你能:)

1

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

1

我试过3种方法:

  • 写我自己的选择()循环framework(几乎死了,我并不建议这样做。)
  • 使用的SocketServer
  • Twisted

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