使用Flask和Gunicorn部署ML模型

问题描述 投票:0回答:1

我是第一次部署ML模型。我正在使用flask-restful创建一个rest api和gunicorn,因为独立的WSGI.my项目目录只有ML_model.py和rApi.py两个文件。我安装了gunicorn并使用gunicorn -w 4 -b 127.0.0.1:5000 rApi:app运行了服务器,并且能够使用restAPi。我看到在线上的教程中提到了许多诸如.env,.config和wsgi.py文件的内容。我想念什么。如果可以使用API​​,为什么还需要所有这些文件?

flask deployment gunicorn flask-restful restapi
1个回答
0
投票

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

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

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

#.env
MODEL_FILE=some/path/to/a.h5

然后使用python-dotenv之类的内容加载该文件,并最终允许您在应用中执行以下操作:

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)

有时会看到

Dedicated wsgi.py文件,以便WSGI服务器可以加载模块wsgi:app。该文件可能包含特定于WSGI部署的配置(例如将ProxyFix middleware应用于应用程序)。

当然,这只是将配置应用于应用程序的一种方法。您也可以传入ProxyFix env var,然后在代码中做一些逻辑以根据此功能启用实际功能。

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


这取决于您如何设计应用程序的这一部分。从环境变量加载配置很普遍。了解您选择的部署方法也将如何处理当然是一个好主意。例如:

© www.soinside.com 2019 - 2024. All rights reserved.