将参数添加到wsgi脚本别名

时间:2012-11-19 22:43:24

标签: python apache wsgi

有没有办法将额外的参数传递给WSGIScriptAlias?例如:

WSGIScriptAlias / /foo/bar/wsgi.py但我想要的是:

WSGIScriptAlias / /foor/bar/wsgi.py baz

编辑以澄清

我有一个基于其运行环境(基于云的部署)的多个配置的Django项目。目前,我正在加载基于主机名的配置(我对此并不满意,因为它不适合在一台机器上测试多个配置而不更改系统的主机名)。因此,另一种解决方案是将命令行参数传递给应用程序并在WSGI入口点加载配置,这在运行开发服务器时相对简单,但我不知道有任何方法可以通过Apache / WSGI。

2 个答案:

答案 0 :(得分:4)

首先,确保您使用的是守护进程模式,无论如何都是首选。

然后在您的WSGI脚本文件中,您可以执行以下操作:

import mod_wsgi

process_group = mod_wsgi.process_group

然后,您可以使用进程组的名称来区分哪种配置。

换句话说,使用您在Apache配置文件中选择使用的守护程序进程组的名称作为区别因素。

答案 1 :(得分:0)

如果您使用的是mod_wsgi,则可以在设置时利用envvars选项。

例如:

mod_wsgi-express start-server ./my-wsgi.py --port 8200 --envvars-script /home/user/envvars_localhost.sh

在envvars文件“ envvars_localhost.sh”中,设置一些所需的参数:

#!/bin/bash
export MOD_WSGI_VARIABLE='config1'

然后在运行时,您的./my-wsgi.py可以引用数据:

mylocalConfigValue = os.environ['MOD_WSGI_VARIABLE']