gpt4 book ai didi

python - 通过命令行将参数传递给 FastAPI 应用程序的方法

转载 作者:行者123 更新时间:2023-12-04 14:01:37 25 4
gpt4 key购买 nike

我的 FastAPI 应用程序使用 python 3.8.0。
它使用 .env文件位于项目目录的根目录。我正在使用 dotenv 包,以及 .env 的位置文件在应用程序中硬编码。这是我的单元文件

[Unit]
Description=Gunicorn instance for my_app
After=network.target

[Service]
User=nginx
Group=nginx
WorkingDirectory=/usr/share/nginx/html/my_app/
Environment="PATH=/usr/share/nginx/html/my_app/venv/bin"
ExecStart=/usr/share/nginx/html/my_app/venv/bin/gunicorn --bind unix:/usr/share/nginx/html/my_app/my_app.sock -w 4 -k uvicorn.workers.UvicornWorker app.main:app

[Install]
WantedBy=multi-user.target

挑战是使用两个不同的 .env 运行同一应用程序的两个版本(生产和测试)。在两个不同的端口上。我将不得不创建第二个单元文件。但是如何将两个不同的 env 文件名的名称传递给应用程序以供进一步使用。这些文件包含数据库连接等。
我想大概是这样
第一单元文件
ExecStart=/usr/share/nginx/html/my_app/venv/bin/gunicorn 
--bind unix:/usr/share/nginx/html/my_app/my_app.sock -w 4 -k uvicorn.workers.UvicornWorker app.main:app --env_file_name=".env.prod"
第二单元文件
ExecStart=/usr/share/nginx/html/my_app/venv/bin/gunicorn 
--bind unix:/usr/share/nginx/html/my_app/my_app.sock -w 4 -k uvicorn.workers.UvicornWorker app.main:app --env_file_name=".env.dev"

最佳答案

您可以在单元文件配置中设置 systemd 读取进程环境的路径。 The setting is called EnvironmnetFile= .只需将选项设置为 .env.prod 的路径在一个单元文件中,并用于 .env.test 的路径为别人。

关于python - 通过命令行将参数传递给 FastAPI 应用程序的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69840223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com