所以我正在试验 uWSGI 并且非常喜欢它。
我有一个关于使用它的 .ini 文件的问题。
是否可以动态计算其 .ini 配置参数的值?
例如,对于我的“uwsgi.ini”文件中的“chdir”值,我有
[uwsgi]
socket=127.0.0.1:3034
chdir=/Users/calvin/work/myproject
virtualenv=/Users/calvin/.virtualenvs/myproject
module=django.core.handlers.wsgi:WSGIHandler()
env= DJANGO_SETTINGS_MODULE=myproject.settings
master=True
pidfile=/tmp/myproject-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/myproject.log
Run Code Online (Sandbox Code Playgroud)
为我的“本地机器”、我的“开发/登台”服务器和我的“生产服务器”编写 3 个单独的 .ini 文件非常麻烦。更何况一个同事的本地机器的chdir
价值会完全不同。
我尝试使用import os
和动态os.join.path
计算chdir
值,但它不起作用,这是意料之中的,因为 uwsgi 没有 python 解释器?
在稍微挖掘了 uwsgi 文档后,我自己找到了答案。
参考https://uwsgi-docs.readthedocs.io/en/latest/ConfigLogic.html,我们可以在 python virtualenv 中通过使用环境变量来指定配置逻辑和动态计算路径。
因此,假设我目前在我的myproject
virtualenv 中,我的 .ini 配置将自动计算我的路径chdir
和virtualenv
.ini 配置选项,如下所示:
[uwsgi]
if-env = PROJECT_HOME
print = Your path is %(_)/myproject
chdir = %(_)/myproject
endif =
if-env = VIRTUAL_ENV
print = Your virtualenv is %(_)
virtualenv = %(_)
endif =
socket=127.0.0.1:3034
module=django.core.handlers.wsgi:WSGIHandler()
env= DJANGO_SETTINGS_MODULE=bbox.settings
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log
Run Code Online (Sandbox Code Playgroud)
print语句是可选的,当然,不过这给uwsgi二进制的价值观chdir
和virtualenv
它期待。
像这样的东西:
calvin$ uwsgi --ini myproject/uwsgi.ini
[uWSGI] getting INI configuration from myproject/uwsgi.ini
Your path is /Users/calvin/work/myproject
Your virtualenv is /Users/calvin/.virtualenvs/myproject
*** Starting uWSGI 1.2.4 (64bit) on [Thu Jul 26 17:00:04 2012] ***
compiled with version: 4.2.1 Compatible Apple Clang 3.1 (tags/Apple/clang-318.0.61) on 25 July 2012 20:06:56
detected number of CPU cores: 8
Run Code Online (Sandbox Code Playgroud)
当然,最终的 .ini 文件中不需要打印语句。我只是将它们放在那里,以便打印出必要的信息,以确认我的路径是在 .ini 文件中动态计算的。
归档时间: |
|
查看次数: |
19008 次 |
最近记录: |