首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调试Apache/Django/WSGI错误请求(400)

调试Apache/Django/WSGI错误请求(400)
EN

Stack Overflow用户
提问于 2013-12-02 13:49:31
回答 3查看 36K关注 0票数 62

我的简单的Django应用程序在调试模式(manage.py runserver)下运行良好,并且在我的dev box上运行在WSGI+Apache下,但是当我推送到EC2时,我尝试查看的任何URL(无论是在我的应用程序中还是在Django admin中)都开始收到间歇性的Bad Request (400)错误(10-80%的时间)。

我在哪里可以找到关于这个的调试信息?即使使用LogLevel=info/var/log/apache2/error.log中也不会出现任何内容。我已经检查了版本,记录了请求环境(参见ModWSGI Debugging Tips),看不出有什么大的不同。

我剩下的一个想法是,我使用Ubuntu12.04(libapache2-mod-WSGI3.3-4build1)中的mod_wsgi,它是针对Python2.7.1构建的;我使用的是Python2.7.3。Django是1.6,比Ubuntu精确版本更新。我不太愿意从源代码开始构建包,因为它很难清理,而且这些似乎只是很小的版本更改……

感谢您的帮助。

(作为参考,这里是Apache配置和WSGI应用程序)

Apache配置(000-默认)

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    WSGIScriptAlias /rz /usr/local/share/rz/rz.wsgi
    ...

rz.WSGI应用程序

import os
import sys
import django.core.handlers.wsgi
import pprint

path = '/usr/local/share/rz'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'rz.settings'

class LoggingMiddleware:
    def __init__(self, application):
        self.__application = application

    def __call__(self, environ, start_response):
        errors = environ['wsgi.errors']
        pprint.pprint(('REQUEST', environ), stream=errors)

        def _start_response(status, headers, *args):
            pprint.pprint(('RESPONSE', status, headers), stream=errors)
            return start_response(status, headers, *args)

        return self.__application(environ, _start_response)

application = LoggingMiddleware(django.core.handlers.wsgi.WSGIHandler())
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20321673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档