Sca*_*osh 2 python apache django
我最近设置了一个Web服务器,该服务器目前托管两个静态页面网站和两个django项目。
django的两个项目分别是“ abc”和“ xyz”,并且分别位于主文件夹中的单独目录中。每个都有自己的wsgi脚本,它们指向各自的settings.py文件。
不过最近,我注意到'xyz'出现了500个错误。通常,刷新可以解决问题,但这是不可接受的,因此我检查了apache error.log,并注意到有时当我按“ xyz”时,会出现一个异常,提示无法在xyz项目中找到abc.settings。这两个项目以某种方式相互交叉并相互干扰。我还没有从事abc方面的工作,还不知道问题是否与其他方法相同。以下是我的例外。
[Sun Jul 08 13:30:34 2012] [error] Traceback (most recent call last):
[Sun Jul 08 13:30:34 2012] [error] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
[Sun Jul 08 13:30:34 2012] [error] self.load_middleware()
[Sun Jul 08 13:30:34 2012] [error] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 39, in load_middleware
[Sun Jul 08 13:30:34 2012] [error] for middleware_path in settings.MIDDLEWARE_CLASSES:
[Sun Jul 08 13:30:34 2012] [error] File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 184, in inner
[Sun Jul 08 13:30:34 2012] [error] self._setup()
[Sun Jul 08 13:30:34 2012] [error] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
[Sun Jul 08 13:30:34 2012] [error] self._wrapped = Settings(settings_module)
[Sun Jul 08 13:30:34 2012] [error] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 95, in __init__
[Sun Jul 08 13:30:34 2012] [error] raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Sun Jul 08 13:30:34 2012] [error] ImportError: Could not import settings 'abc.settings' (Is it on sys.path?): No module named scalamoosh.settings
Run Code Online (Sandbox Code Playgroud)
任何帮助/建议将不胜感激。干杯
您遇到的问题是,尽管mod_wsgi为每个Django应用程序提供了自己的python解释器,但它们仍共享Django存储设置模块名称的相同操作系统环境。我发现的解决方法是在创建WSGI应用程序对象之前,更改Django在其中查找设置模块的环境变量的名称。
我经过稍微修改的wsgi.py看起来像这样:
import os
# change the env variable where django looks for the settings module
import django.conf
django.conf.ENVIRONMENT_VARIABLE = "DJANGO_SECOND_SETTINGS_MODULE"
os.environ.setdefault("DJANGO_SECOND_SETTINGS_MODULE", "second.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |