首页 > 解决方案 > 如何加快python后端发出大量http请求

问题描述

我正在尝试学习一些网络/后端的东西。我现在想构建一个 API,它发出一个 HTTP 请求,进行一些处理,发回一个响应。不是很有用,但它是为了学习。

我注意到获取请求是一个巨大的瓶颈。我认为这是一个 I/O 问题,因为响应非常小。现在我想我可以在多个线程上进行下载。如果我的虚构客户端发出请求,则需要将 URL 添加到池中,然后(由某个工作线程)获取并返回到工作线程,处理并发回。或类似的东西...

我真的不是专家,也许我刚才所说的没有任何意义......但我真的很感激一点帮助:)

标签: pythonmultithreadingflaskrequestmultiprocessing

解决方案


存在多种解决方案。您可以使用线程(线程池)或多处理(多处理池)并行执行多个请求。

或者您可以使用诸如 asyncio(或 twisted)之类的库以某种方式在一个线程中执行多个请求,等待 IO 不再是阻塞点。

我建议你看看:

https://docs.python.org/3/library/threading.html用于线程或https://docs.python.org/3/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing用于多处理。

在我看来,异步编程要困难得多,但如果好奇, 请查看https://docs.python.org/3/library/asyncio.html?highlight=asyncio#module-asyncio了解异步基础知识和https://docs .aiohttp.org/en/stable/ 用于与 asyncio“并行”执行多个 http 请求

玩了一会儿之后,你可能会有很多毛孔精确的问题。

只需发布您的代码,解释问题,您将获得更多帮助


推荐阅读