使用gunicorn和环境变量运行flask应用程序

Ale*_*x T 7 environment-variables flask gunicorn

对于本地开发,我只需设置包含必要变量的 .env 文件,然后运行应用程序:

Flask run

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

但是,当我使用 Gunicorn 运行应用程序时:

gunicorn api:app --bind 127.0.0.1:5050

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

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

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

然后它就会起作用。然而,由于我可以有很多环境变量,这实际上并不可行。有没有办法使用文件来设置这个?

dmi*_*kov 13

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

# gunicorn.conf.py
import os
os.environ['POSTGRES_DB'] = "postgresql://XXXXX"
Run Code Online (Sandbox Code Playgroud)

您甚至可以告诉它加载您的.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)
Run Code Online (Sandbox Code Playgroud)