使用Flask和Gunicorn部署ML模型

使用Flask和Gunicorn部署ML模型,flask,deployment,gunicorn,flask-restful,restapi,Flask,Deployment,Gunicorn,Flask Restful,Restapi,我第一次部署了一个ML模型。我正在使用flask restful创建一个rest api和gunicorn作为独立的WSGI。我的项目目录只有两个文件,ML_model.py和rApi.py。我安装了gunicorn并使用gunicorn-w4-b127.0.0.1:5000 rApi:app运行了服务器,并且我能够使用restAPi。我看到了许多在线教程中提到的.env、.config和wsgi.py文件。 我错过了什么。如果我已经可以使用API,为什么我需要所有这些文件 我看到了许多类似.e

我第一次部署了一个ML模型。我正在使用flask restful创建一个rest api和gunicorn作为独立的WSGI。我的项目目录只有两个文件,ML_model.py和rApi.py。我安装了gunicorn并使用
gunicorn-w4-b127.0.0.1:5000 rApi:app运行了服务器,并且我能够使用restAPi。我看到了许多在线教程中提到的.env、.config和wsgi.py文件。
我错过了什么。如果我已经可以使用API,为什么我需要所有这些文件

我看到了许多类似.env、.config和wsgi.py文件的内容

最有可能的是,这些只是将配置加载到应用程序中的不同方式

例如,使用
.env
文件,可以以以下形式声明一些变量:

#.env
MODEL_FILE=some/path/to/a.h5
然后加载类似的内容,实际上允许您在应用程序中执行以下操作:

model_to_use = os.getenv('MODEL_FILE', 'default.h5')
then_do_someting_with(model_to_use)
这将使硬编码(可能是秘密变量)远离您的代码,避免将它们提交给源代码控制。因此,当您将应用程序部署到其他服务器或系统时,可以创建一个新的
.env
文件,该文件包含:

MODEL_FILE=some/production_ready/file.h5
现在,可以使用不同的功能部署相同的代码副本


如果您希望将上述所有配置一起加载,可以使用专用的
config.py
,然后在
app.py
中执行以下操作:

from config import MODEL_FILE
# ...
do_something_with(MODEL_FILE)

有时会看到专用的
wsgi.py
文件,以便wsgi服务器可以加载模块
wsgi:app
。此文件可能包含特定于WSGI部署的配置(例如应用于应用程序)

当然,这只是将该配置应用于应用程序的一种方法。您还可以在
env var上传递一个
PROXYFIX\u,然后在代码中执行一些逻辑,以基于该变量的存在启用实际功能

后者意味着通过更改env变量禁用或启用功能。前者意味着根据用于运行服务器的模块禁用或启用功能


这真的取决于你如何设计应用程序的这一部分。不过,从环境变量加载配置非常常见。当然,了解您选择的部署方法如何处理这一问题也是一个好主意。例如: