python - 将 Flask 与需要并行到多个内核上的 CPU 绑定请求一起使用
问题描述
我工作的一位计算科学家编写了一个程序,该程序使用使用 scikit-learn 构建的机器学习模型对输入进行评分。我的任务是让这个机器学习记分器作为微服务可用。
所以我用 Flask 写了几行代码来完成这个。任务达成!
嗯,不完全是。因为该服务有时会被大量使用,所以它需要能够并行处理多个请求。(即,在多个内核上。我们的服务器上大约有 20 个。)我可以通过大约 10 分钟的努力实现的解决方案是在不同的端口上启动 10 或 20 个这些小型 REST 服务器并循环到它们使用 nginx 作为反向代理。
虽然这会很好,但我敢肯定,我认为让一个 Python 服务器处理所有请求会更优雅,而不是拥有 20 个 Python 服务器。所以我开始阅读 WSGI 和 uWSGI 以及其他一些东西。但是我通过所有这些阅读和网上冲浪所完成的一切最终都变得非常混乱。
所以我会在这里问,而不是试图自己解决这个问题:我应该坚持我上面描述的蛮力方法吗?或者有什么更好的我可以做的吗?
但是,如果做一些“更好”的事情需要花费数天的时间来阅读难以理解的文档,进行令人沮丧的实验,并拔掉我所有的头发,那么我宁愿坚持我已经理解的愚蠢的蛮力方法,并且我知道肯定会奏效。
谢谢。
解决方案
我建议为此迁移 FastAPI。它明显更快,非常易于使用(特别是如果您从 Flask 迁移),并且被很多人用于 ML 推理。
FastAPI 在 python 中使用了更新的异步功能,这允许它使用相同数量的资源处理更多的请求。
您还可以将现有的 docker 容器用于烧瓶或 fastapi,而不是自己配置。
推荐阅读
- python - Discord Bot Python 删除作者的消息
- vba - 作用于 Microsoft Word 中的多个 Selection.Range 对象
- php - php 数据未处理,有人可以查看我的代码吗?
- javascript - 如何循环遍历具有对象的 React App 中的 javascript 数组并获取具有特定值的属性的计数
- javascript - AngularJS - JQuery UI 是否与内置的 JQLite 一起使用
- bash - 计算bash中带有许多小数的2个数字之间的百分比增加/减少
- java - 内部类泛型 - 不兼容的类型
- javascript - 在网页上捕获签名(通过平板电脑屏幕)
- swift - Xcode NSEException,信号 SIGABRT 无法弄清楚
- jquery - JQuery - 语法