2014-01-29 168 views
2

我正在设置一个HTTP服务器,它接收一些输入,然后应用程序需要同时发送多个HTTP请求(到另一个服务器)。什么是最好的方法呢?Python:同时发出多个HTTP请求

如果我使用Twisted框架,还需要使用线程吗?

回答

2

您不必担心自己的线程或线程安全问题。花在做HTTP请求上的大部分时间都在等待响应,此时Python可以安全地并行运行其他代码。使用一些库和Python必须管理的并发I/O等待的内置功能。

您可以使用gevent。 Twisted具有类似的功能,但学习使用可能会更复杂。还有Python内置的multiprocessing.dummy功能。

如果你使用的不是Twisted,你可以并且应该使用请求库来完成HTTP客户端的工作 - 你可能需要使用grequests这是一个绿色线程变体非阻塞I/O。

+0

对于['gevent'](http://www.gevent.org/)的介绍可能会有帮助:http://www.gevent.org/intro.html和http://sdiehl.github .IO/GEVENT教程/#简单的服务器 – iljau

0

Threading或Twisted都可以做到这一点。

即。如果你使用扭曲,你将不需要使用线程。

请记住,某些服务器对于单个IP地址允许的连接数量有限制。

2

如果使用Twisted网络引擎,则不需要使用线程。只需发出请求并通过添加将在可用时执行的回调等待响应。

为了使用Twisted创建HTTP请求的简便方法,您可能需要考虑Treq,这是一个适用于Twisted的HTTP客户端的启发式便利层。