两个Django项目同时运行,mod_wsgi运行werid

MHC*_*MHC 11 django mod-wsgi

我正在尝试同时运行两个Django项目.我碰巧使用mod_wsgi,发现该网站表现得很奇怪.也许会有一个解决方法,但我想知道我错过了什么,以及如何解决问题.

在apache配置中

# Setup the Python environment
# As root owns basically everything on a Amazon AMI and root
# cannot be used. Create a folder under /var/run/wsgi
# with the owner as ec2-user and group ec2-user.
WSGISocketPrefix /var/run/wsgi
# Call your daemon process a name
WSGIDaemonProcess pydaemon processes=1 threads=5
# Call your daemon process group a name
WSGIProcessGroup pydaemon
# Point to where the handler file is. This will be different
# If you are using some other framework.
WSGIScriptAlias /test /var/www/html/test/wsgi.py
WSGIScriptAlias /proto /var/www/html/proto/wsgi.py
Run Code Online (Sandbox Code Playgroud)

Apache重新启动后,如果我连接到'/ proto',则会显示proto站点.但是,然后我连接到'/ test',而不重启Apache,原始站点仍然显示,我无法访问测试站点.

现在我重启Apache,这次我先去'/ test'.测试网站出现了!但是,如果我去'/ proto'它仍然显示测试站点,而不是原型站点.

什么能让这件事发生?为了以防万一,我为每个应用程序添加了不同的SESSION_COOKIE_PATH,但问题仍然存在.


[更新]

我也尝试了如下,给出不同的WSGI应用程序组名称,但没有运气.

Alias /cuedit /var/local/test/wsgi.py
<Location /test>
SetHandler wsgi-script
Options +ExecCGI
WSGIApplicationGroup test
</Location>
Alias /proto /var/local/proto/wsgi.py
<Location /proto>
SetHandler wsgi-script
Options +ExecCGI
WSGIApplicationGroup proto
</Location>
Run Code Online (Sandbox Code Playgroud)

[更新]

我从守护进程模式更改为嵌入模式.我想问题是两个实例共享相同的mod_wsgi守护程序进程,因此它们的命名空间发生冲突.

我希望它们应该被正确处理,但是在守护进程模式中我无法正确处理它.

Gra*_*ton 14

使用此作为变通方法:

WSGIDaemonProcess pydaemon-1 processes=1 threads=5
WSGIDaemonProcess pydaemon-2 processes=1 threads=5

WSGIScriptAlias /test /var/www/html/test/wsgi.py

<Location /test>
WSGIProcessGroup pydaemon-1
WSGIApplicationGroup %{GLOBAL}
</Location>

WSGIScriptAlias /proto /var/www/html/proto/wsgi.py

<Location /proto>
WSGIProcessGroup pydaemon-2
WSGIApplicationGroup %{GLOBAL}
</Location>
Run Code Online (Sandbox Code Playgroud)

这将强制每个应用程序进入单独的守护进程组,并且它们不应该相互干扰.

如果仍然无法正常工作,那么您的WSGI脚本文件会出现问题.