【发布时间】:2014-01-29 06:36:00
【问题描述】:
我希望设置一个 HTTP 服务器,它接受一些输入,然后应用程序需要同时发送多个 HTTP 请求(到另一台服务器)。最好的方法是什么?
如果我使用 Twisted 框架,我还需要使用线程吗?
【问题讨论】:
标签: python multithreading thread-safety twisted
我希望设置一个 HTTP 服务器,它接受一些输入,然后应用程序需要同时发送多个 HTTP 请求(到另一台服务器)。最好的方法是什么?
如果我使用 Twisted 框架,我还需要使用线程吗?
【问题讨论】:
标签: python multithreading thread-safety twisted
您自己不必担心线程或线程安全。执行 HTTP 请求的大部分时间都在等待响应,此时 Python 可以安全地并行运行其他代码。使用 Python 必须的一些库和内置功能来管理并发 I/O 等待。
你可以使用 gevent。 Twisted 具有类似的功能,但学习使用可能更复杂。 Python 还内置了 multiprocessing.dummy 功能。
如果你使用 Twisted 以外的东西,你可以并且应该使用 requests 库来做 HTTP 客户端的东西连同上面的东西——你可能需要使用 grequests,它是一个绿色线程的变体,来做非阻塞 I/O。
【讨论】:
gevent的介绍,下面的教程可能会有所帮助:gevent.org/intro.html和sdiehl.github.io/gevent-tutorial/#simple-servers
Threading 或 Twisted 都可以做到这一点。
即。如果使用twisted,则不需要使用Threading。
请记住,某些服务器对允许来自单个 IP 地址的连接数有限制。
【讨论】: