Python中如何使用uwsgi启动带配置文件目录的Python项目?
8 回复
这取决于
main.py 怎么理解-c 参数
要使用uWSGI启动带配置文件目录的Python项目,关键在于正确设置--pyargv参数来传递配置路径。假设你的项目结构如下:
myproject/
├── config/
│ └── settings.ini
└── app.py
在app.py中,你需要通过sys.argv来获取配置路径:
import sys
import configparser
def application(env, start_response):
# 从uWSGI传递的参数中获取配置路径
if len(sys.argv) > 1 and sys.argv[1].startswith('--config='):
config_path = sys.argv[1].split('=', 1)[1]
else:
config_path = 'config/settings.ini' # 默认路径
config = configparser.ConfigParser()
config.read(config_path)
# 你的应用逻辑
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'Hello World']
启动命令:
uwsgi --http :8000 --wsgi-file app.py --pyargv "--config=config/settings.ini"
这样配置路径就会通过sys.argv传递给应用,你可以在代码中解析并使用它。
总结:用--pyargv传参,在代码里解析sys.argv。
-c 是通过 argparse 的 add_argument 自动添加的
可以考虑将一部分配置文件写到环境变量里面
那你这种用法不对,你的 main.py 里,包含了“不只是 wsgi app “的 argparse 这部分功能
而 uwsgi 期望你给它的是一个 wsgi app
sudo ln -s /path/to/your/mysite/mysite_uwsgi.ini /etc/uwsgi/vassals/
#把下边这句增加到 /etc/rc.local 即可自动读取配置文件,且开机启动
/usr/local/python3/bin/uwsgi --emperor /etc/uwsgi/vassals
比如你是 flask,自带有添加 run cmd 的管理库。

