使用 Flask 和 Gunicorn 部署 ML 模型



我是第一次部署ML模型。我正在使用 flask-restful 创建一个 rest api 和 gunicorn 作为独立的 WSGI.my 项目目录只有 2 个文件,ML_model.py和 rApi.py。我安装了Gunicorn并使用gunicorn -w 4 -b 127.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

然后用类似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)

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

当然,这只是将该配置应用于应用程序的一种方法。 您还可以传入PROXYFIX_ONenv var,然后在代码中执行一些逻辑以基于此内容启用实际功能。

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


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

  • Heroku:配置和配置变量
  • Pythonanywhere:如何为您的 Web 应用程序设置环境变量
  • Docker:撰写中的环境变量

最新更新