当前位置:  开发笔记 > 编程语言 > 正文

在UWSGI下从Django登录

如何解决《在UWSGI下从Django登录》经验,为你挑选了1个好方法。

我通过uwsgi服务器运行我的django应用程序,并在我的init脚本中启动32个进程-args:

ARGS="--pidfile ${PIDFILE} --uid ${UID} -s /tmp/${NAME}.sock --pythonpath ${GCS_HOME}/server/src/gcs --master -w wsgi -d ${GCS_HOME}/logs/uwsgi.log -p 32 -z 30"

版本是Python 2.6.5,Django 1.2.1,uWSGI 0.9.5.1

我想要一个日志文件,所以我使用基于多处理的日志处理程序,如问题641420所述.

multilogging处理程序在我所拥有的简单测试应用程序中工作正常,并且当我使用werkzeug运行manage.py runserver_plus时,但是当我使用django和uwsgi运行时没有记录任何内容(尽管我没有从uwsgi进程获得错误或异常) .

我的wsgi文件在下面,如果有人能够识别我的配置问题或者对正在发生的事情的解释,我将不胜感激:

APP_VIRTUAL_ENV = "/home/devadmin/gcs/server/gcs_env/"
APP_PARENT_PATH = "/home/devadmin/gcs/server/src/"

##                                                                              

import sys
# Redirect stdout to comply with WSGI                                           
sys.stdout = sys.stderr

import os, site

# Set the settings module django should use                                     
os.environ['DJANGO_SETTINGS_MODULE'] = "gcs.settings"

# set the sys.path                                                              
site_packages_subpath = "/lib/python%s.%s/site-packages" % (sys.version_info[0]\
, sys.version_info[1], )
site_packages_path = os.path.join(APP_VIRTUAL_ENV, site_packages_subpath[1:])

sys_path = []
for path in sys.path:
    if site_packages_subpath in path and not path.startswith(APP_VIRTUAL_ENV):
        continue
    sys_path.append(path)

sys.path = [ APP_PARENT_PATH ]
sys.path += sys_path
site.addsitedir(site_packages_path)

# reorder sys.path                                                              
for path in sys_path:
    sys.path.remove(path)
sys.path += sys_path

# setup logging                                                                 
import os.path
import logging
import logging.config
logging.config.fileConfig(os.path.join(os.path.dirname(__file__), "logging.conf\
"))

synthesizerp.. 12

答案已经更新 - 2013年5月15日 - 请参阅底部以获取其他日志记录选项

如果您想拥有一个日志文件 - 使用syslog,让它处理将所有输入多路复用到一个文件中.将多个进程附加到单个文件是很难看的,即使有多处理的解决方法也是如此.

除了线程/进程安全"缩混"各种日志信息流的优势之外,您始终可以指定远程主机以便根据需要发送日志,并且当您的客户正在编写时,它使日志文件轮换变得轻而易举无论是域套接字还是UDP套接字 - 它们都不必等待您管理它们下面的文件.更好的是,你不会丢失信息.

与系统日志守护程序(如syslog-ng)结合使用,可以进行大量奇特的切片和切块,消息中继,重复的消息过滤等.

长话短说 - 系统日志比管理你自己的日志文件更好(在我看来),针对系统日志的最佳参数是,你没有'拥有'服务器(表面上,日志文件可能不受限制).

如果你想超级棒,请将你的日志数据发送到splunk,你将把你的游戏提升到一个新的水平.大多数人使用Splunk进行IT日志聚合,但是从应用程序到splunk的syslogging是实现数据挖掘功能的快捷方式,可以了解性能瓶颈,使用模式等等.

#!/usr/bin/python

import logging
from logging.handlers import SysLogHandler

# Setup
logger = logging.getLogger( "mything" )
hdlr = SysLogHandler( address = '/dev/log', facility = SysLogHandler.LOG_USER )
logger.addHandler( hdlr )
formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s')
hdlr.setFormatter( formatter )
logger.setLevel( logging.INFO )


logger.info( 'hello Laverne!' )
logger.debug( 'The Great Ragu has taken ill!' )

新内容 - 2013年5月15日

如果你有基础设施/韧性来设置它还有一个值得一提的附加选项 - Sentry,它有可用于Python的库(以及Javascript和其他),它提供了一个集中的位置,供你发送错误以进行监控.它看起来很整洁.



1> synthesizerp..:

答案已经更新 - 2013年5月15日 - 请参阅底部以获取其他日志记录选项

如果您想拥有一个日志文件 - 使用syslog,让它处理将所有输入多路复用到一个文件中.将多个进程附加到单个文件是很难看的,即使有多处理的解决方法也是如此.

除了线程/进程安全"缩混"各种日志信息流的优势之外,您始终可以指定远程主机以便根据需要发送日志,并且当您的客户正在编写时,它使日志文件轮换变得轻而易举无论是域套接字还是UDP套接字 - 它们都不必等待您管理它们下面的文件.更好的是,你不会丢失信息.

与系统日志守护程序(如syslog-ng)结合使用,可以进行大量奇特的切片和切块,消息中继,重复的消息过滤等.

长话短说 - 系统日志比管理你自己的日志文件更好(在我看来),针对系统日志的最佳参数是,你没有'拥有'服务器(表面上,日志文件可能不受限制).

如果你想超级棒,请将你的日志数据发送到splunk,你将把你的游戏提升到一个新的水平.大多数人使用Splunk进行IT日志聚合,但是从应用程序到splunk的syslogging是实现数据挖掘功能的快捷方式,可以了解性能瓶颈,使用模式等等.

#!/usr/bin/python

import logging
from logging.handlers import SysLogHandler

# Setup
logger = logging.getLogger( "mything" )
hdlr = SysLogHandler( address = '/dev/log', facility = SysLogHandler.LOG_USER )
logger.addHandler( hdlr )
formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s')
hdlr.setFormatter( formatter )
logger.setLevel( logging.INFO )


logger.info( 'hello Laverne!' )
logger.debug( 'The Great Ragu has taken ill!' )

新内容 - 2013年5月15日

如果你有基础设施/韧性来设置它还有一个值得一提的附加选项 - Sentry,它有可用于Python的库(以及Javascript和其他),它提供了一个集中的位置,供你发送错误以进行监控.它看起来很整洁.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有