我有一个接收
GET
请求的 Flask 服务,并且我想扩展该端点(在单个计算机/容器上)上的 QPS。我应该使用 python ThreadPoolExecutor
或 ProcessPoolExecutor
,还是其他东西? GET
请求只是从数据库支持的缓存中检索小块数据。 Flask 有什么特定的地方需要考虑吗?
都不是。
Flask 将为每个工作人员提供一个请求 - 您设置它的方式(使用 Gunicorn、wsgi 或 awsgi)决定了您的应用程序可以处理的并行请求的数量。
在您的应用程序内部,您无需更改任何内容 - 您的视图将被称为独立进程、独立线程或独立异步任务,具体取决于您如何设置服务器 - 这就是您必须修改配置的地方。
仅当每个请求都具有计算和数据获取(这些计算和数据获取本身可以在同一请求内并行化)时,使用另一种并发策略才有意义。
检查您的部署是如何配置的,并选择最适合您的选项(在所有条件相同的情况下,选择最简单的一个):https://flask.palletsprojects.com/en/stable/deploying/(另外,我会不推荐这些选项中的“mod_wsgi” - 它超级复杂且技术陈旧)