uwsgi皇帝在项目中共享并使用通用的默认ini

时间:2018-08-16 18:58:46

标签: flask uwsgi ini

我正在使用uwsgi Emperor管理多个Flask应用程序,对于每个单独的应用程序,我都有几个ini配置,例如我想从中央local.ini共享production.inidefault.ini的共同ini功能。我希望能够对多个项目执行此操作,即不同的项目可以具有不同的默认值。但是,我无法让皇帝跟随符号链接来识别default.ini文件。我如何让皇帝遵循符号链接,以便每个项目都能了解其default.ini位置?我总是得到错误 realpath() of default.ini failed: No such file or directory

emperor.ini设置文件

[uwsgi]
emperor = /www/uwsgi/vassals
emperor-broodlord = 40
logto = /www/uwsgi/log/emperor.log
master = true
thunder-lock = true
enable-threads = true
stats = /tmp/empstats.sock
die-on-term = true

我的vassals目录设置有指向相应项目ini文件的符号链接

uwsgi_app1.ini -> /path/to/project1/local.ini 
uwsgi_app2.ini -> /path/to/project2/local.ini

对于每个单独的项目,我都有一个default.ini,其中包含要用于该项目的本地和生产环境的通用设置。

Project1 default.ini

[uwsgi]

file = %(wwwdir)/%(module)/run_%(app_name)
daemonize = %(wwwdir)/%(module)/log/%(app_name).log
socket = %(socketdir)/uwsgi_%(app_name).sock
stats = %(socketdir)/%(module)_stats.sock

master = true
processes = 4

chmod-socket = 666
vacuum = true
thunder-lock = true
enable-threads = true
lazy-apps = true

具有local.iniproduction.ini,但变量略有不同的是

本地

[uwsgi]
callable = app
wwwdir = /localwww/
socketdir = /tmp
module = app1
app_name = app1
ini = default.ini

生产

[uwsgi]
callable = app
wwwdir = /home/var-www/
socketdir = /run/uwsgi/tmp
module = app1
app_name = app1
ini = default.ini

如果我使用%p魔术变量指定绝对路径,则它指向皇帝附庸目录www/uwsgi/vassals/default.ini,而不是真实路径。

1 个答案:

答案 0 :(得分:0)

我正在使用项目文件中default.ini的完整路径...

ini = /path/to/my/project/config/uwsgi/defaults.ini