12

我只是想知道有哪些网络库可用于 Python 构建 TCP/IP 服务器。我知道 Twisted 可能会跳到我的脑海中,但文档对我来说似乎稀缺、草率和分散。

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

4

5 回答 5

10

我必须同意文档有点简洁,但教程可以让你快速上手。

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

Twisted 的基于事件的编程范式和它的延迟在一开始可能有点奇怪(对我来说),但值得学习曲线。

与编写自己的框架相比,您将能够更快地启动并运行更复杂的东西,并且这也意味着寻找错误的事情少了一件,因为 Twisted 已经在生产中得到了很好的证明。

我真的不知道另一个框架可以提供 Twisted 所能提供的那么多,所以我的投票肯定会投给 Twisted,即使文档不适合胆小的人。

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

于 2009-01-14T04:06:30.930 回答
6

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

于 2009-01-14T04:00:44.670 回答
1

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

在大多数情况下,Twisted 可能会更快、更可靠,所以如果可以的话,我会接受文档 :)

于 2009-01-14T04:13:47.873 回答
1

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

于 2009-01-14T06:19:12.923 回答
1

我尝试了 3 种方法:

  • 编写我自己的 select() 循环框架(几乎死了,我不一定推荐它。)
  • 使用套接字服务器
  • 扭曲的

我将 SocketServer 用于流量相当低的内部 Web 服务。用于相当高流量的内部日志服务。两者都表现得非常好,并且对于生产使用来说似乎非常可靠。对于任何需要高性能的东西,我认为 Twisted 的东西要好得多,但要了解架构还需要做更多的工作。

于 2009-01-15T02:50:14.000 回答