Python:同时发出多个HTTP请求

时间:2014-01-29 06:36:00

标签: python multithreading thread-safety twisted

我希望设置一个HTTP服务器,它接受一些输入,然后应用程序需要同时发送多个HTTP请求(到另一个服务器)。对此最好的方法是什么?

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

3 个答案:

答案 0 :(得分:2)

您自己无需担心线程或线程安全问题。执行HTTP请求的大部分时间都在等待响应,此时Python可以安全地并行运行其他代码。使用Python的一些库和内置函数来管理并发I / O等待。

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

如果您使用Twisted之外的其他内容,您可以并且应该使用请求库来执行上述的HTTP客户端内容 - 您可能需要使用grequests,这是一个绿色线程的变体,做非阻塞I / O.

答案 1 :(得分:2)

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

对于使用Twisted进行HTTP请求的简单方法,您可能需要考虑Treq,一个requests启发的Twisted HTTP客户端便利层。

答案 2 :(得分:0)

线程或扭曲都可以做到这一点。

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

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