【问题标题】:Python: Multiple HTTP requests at the same timePython:同时多个 HTTP 请求
【发布时间】:2014-01-29 06:36:00
【问题描述】:

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

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

【问题讨论】:

    标签: python multithreading thread-safety twisted


    【解决方案1】:

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

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

    如果你使用 Twisted 以外的东西,你可以并且应该使用 requests 库来做 HTTP 客户端的东西连同上面的东西——你可能需要使用 grequests,它是一个绿色线程的变体,来做非阻塞 I/O。

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      即。如果使用twisted,则不需要使用Threading。

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

      【讨论】:

        猜你喜欢
        • 2017-09-03
        • 1970-01-01
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 2018-06-17
        • 2011-11-28
        相关资源
        最近更新 更多