通过命令行向FastAPI应用程序传递参数的方法

3
我正在使用Python 3.8.0来开发我的FastAPI应用程序。它使用位于项目目录根目录下的.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"
1个回答

3

你可以在unit文件配置中使用EnvironmentFile=设置系统将从哪个路径读取进程的环境变量。此设置称为。只需在一个unit文件中将选项设置为.env.prod的路径,另一个文件中将选项设置为.env.test的路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接