Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 托管多个VirtualHost实例_Python_Django_Apache_Mod Wsgi - Fatal编程技术网

Python 托管多个VirtualHost实例

Python 托管多个VirtualHost实例,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我的django项目由许多应用程序、库和中间件组成。我希望在不同的虚拟主机上运行此项目的不同配置(因为不同的用例和需求,例如:一个用于用户,一个用于M2M api,等等)。从问题中我了解到,只要我有单独的wsgi引导文件,托管它应该不会有问题,但我不明白为什么会出现以下行: os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings' 不会导致同时部署的错误。如果我有几个虚拟主机,它们有自己的wsgi配置文件,所有这些文件都设置了DJANGO_

我的django项目由许多应用程序、库和中间件组成。我希望在不同的虚拟主机上运行此项目的不同配置(因为不同的用例和需求,例如:一个用于用户,一个用于M2M api,等等)。从问题中我了解到,只要我有单独的wsgi引导文件,托管它应该不会有问题,但我不明白为什么会出现以下行:

os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings'
不会导致同时部署的错误。如果我有几个虚拟主机,它们有自己的wsgi配置文件,所有这些文件都设置了DJANGO_SETTINGS_MODULE系统变量,那么它们是否会覆盖彼此的设置

是否每次请求都会“及时”更改此设置?在这种情况下,有没有更有效的方法来处理这种多主机设置


谢谢,

django安装都有自己的python范围。这意味着site1的变量在site2中不可用。这与两个python shell相同。您无法访问其他人环境

因此,您有两个正在运行的项目实例。一个用于站点1,一个用于站点2


我也以这种方式处理我的安装,但我可以想象,最好只使用一个安装,并在子页面中提供类似API的内容。但是我不知道这是否对性能有显著的改善。

是的,默认情况下,每个WSGI应用程序在一个进程中都有自己的子解释器。隔离并不总是完美的,但通常是有效的。为了实现最佳隔离,最好结合使用WSGIDaemonProcess/WSGIProcessGroup,为每个wsgi应用程序使用单独的mod_wsgi守护进程进程组。