运行 带有 gunicorn 和环境变量的烧瓶应用程序

Running flask app with gunicorn and environment variables

对于本地开发,我只是设置了包含必要变量的 .env 文件,并且 运行 应用程序具有:

Flask run

一切似乎都很好,所有环境变量都在应用程序中正确读取和设置。

但是当我 运行 带有 gunicorn 的应用程序时:

gunicorn api:app --bind 127.0.0.1:5050

我可以清楚地看到没有加载env变量。

仅当我在 gunicorn 命令中明确设置它们时:

gunicorn api:app --bind 127.0.0.1:5057 -e POSTGRES_DB=postgresql://XXXXX

然后就可以了。 但是,因为我可以有很多环境变量,所以这不太可行。有没有办法使用文件来设置它?

Gunicorn 可以读取 gunicorn.conf.py 文件,这只是一个普通的 python 文件,您可以在其中设置环境变量:

# gunicorn.conf.py
import os
os.environ['POSTGRES_DB'] = "postgresql://XXXXX"

您甚至可以告诉它加载您的 .env 文件,例如:

# gunicorn.conf.py
import os
from dotenv import load_dotenv

for env_file in ('.env', '.flaskenv'):
    env = os.path.join(os.getcwd(), env_file)
    if os.path.exists(env):
        load_dotenv(env)