Django:关闭http响应消息的控制台输出

问题描述

| 因此,我们使用django开发了一个应用程序,每次收到请求时,它将在控制台上打印所有这些http响应消息。
[Date String] \'GET /urlpath/..blah blah \' 200 216
[Date String] \'DELETE /anotherurl/..blah blah \' 200 205 
...
..
我们已禁用所有记录器输出。设置Debug = False。尝试了\'python manage.py runserver --verbosity 0 \'。甚至尝试将sys.stdout更改为NullDevice()类。但是,我们似乎无法关闭这些响应消息,这些消息使服务器的爬网速度变慢。除这些消息外,所有其他消息均关闭。有什么建议么? 我意识到django内部Web服务器仅用于开发而不是生产,但是我们希望在开发版本本身时获得相当的速度(而不必在Apache / lighttpd后面部署django的麻烦) 。     

解决方法

        内置开发服务器不是为提高性能而设计的,而是使用
gunicorn
。您可以将其作为应用程序添加到Django项目中,它将使命令“ 2”可供您使用,以替代“ 3”。它比内置的开发服务器快得多,响应速度也更快。如果需要,还可以用
--log-level
设置gunicorn的日志记录级别。它也很容易部署,适合生产。     ,        您可以打开控制台日志记录,但是有了这个小补丁,您可以抑制诸如
GET /urlpath/..blah blah \' 200 216
...
完全,所有这些都具有HTTP结果代码= 200。 在您的站点包或VirtualEnv(如果正在使用)目录中,转到文件夹结构django / core / servers / basehttp.py 然后转到 WSGIRequestHandler类, 函数def log_message(self,format,* args) 后
# Don\'t bother logging requests for admin images or the favicon.
if (self.path.startswith(self.admin_media_prefix)
        or self.path == \'/favicon.ico\'):
    return
插入
# START ----- Don\'t show page requests which have run successfully
if args[1] == \'200\':
    return
# END ----- Don\'t show page requests which have run successfully
对于Python 2.7.3,Django 1.4.3,这是一个肮脏的解决方法,我对干净的自定义感兴趣,也:-)