我只是想知道有哪些网络库可用于 Python 构建 TCP/IP 服务器。我知道 Twisted 可能会跳到我的脑海中,但文档对我来说似乎稀缺、草率和分散。
此外,使用 Twisted 甚至比使用 select.select() 滚动我自己的服务器有好处吗?
我只是想知道有哪些网络库可用于 Python 构建 TCP/IP 服务器。我知道 Twisted 可能会跳到我的脑海中,但文档对我来说似乎稀缺、草率和分散。
此外,使用 Twisted 甚至比使用 select.select() 滚动我自己的服务器有好处吗?
我必须同意文档有点简洁,但教程可以让你快速上手。
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 )
标准库包括 SocketServer 和相关模块,可能足以满足您的需求。这是在像 Twisted 这样的复杂框架和滚动你自己的 select() 循环之间的一个很好的中间地带。
如果您不愿意使用 Twisted,您可能需要查看SocketServer.ThreadingTCPServer。它很容易使用,并且可以用于许多目的。
在大多数情况下,Twisted 可能会更快、更可靠,所以如果可以的话,我会接受文档 :)
只需添加一个答案以重新迭代其他海报 - 使用 Twisted 是值得的。没有理由编写另一个 TCP 服务器,它最终会像使用 twisted 的那样工作。唯一的原因是,如果编写自己的代码更快,对开发人员来说更快,但如果你现在咬紧牙关学习扭曲,你未来的项目将受益匪浅。而且,正如其他人所说,如果你从一开始就使用twisted,你将能够做更复杂的事情。