2010-11-24 61 views
-2

对于我的python/django网站,我需要建立一个“仪表板”,将更新我的几十个错误/心跳/意外事件的状态上。需要建立一个Python/Django的“仪表板”,以取代系统电子邮件给管理员

有几种类型的“事件”是我目前所具有的Django网站发送电子邮件到管理员帐户跟踪:
1)的东西,通常应该发生出错。我们每隔几个小时就会将文件同步到不同的服务和其他机器,并在出现错误时发送错误电子邮件。 2)当应该发生的事情发生时。有时,项目#1中的事件发生如此可怕以至于他们甚至不发送电子邮件(尝试:除非:事件应始终有效,但事情可能会从crontab中删除,系统配置可能会被歪曲运行等等,我甚至不会收到错误邮件,缺少成功/心跳电子邮件会让我知道应该发生的事情没有发生。)
3)当发生任何意外事件时。我们对如何运行后端操作以及是否违反了这些假设(例如,我们发现拥有相同电子邮件地址的两个用户)都有很多假设,我们想知道这些假设。这些事件不一定是错误,更像是要进行调查的警告。


所以我想建立一个仪表板,我可以很容易地从蟒蛇更新/ Django的给我提供所有这些类型的活动的鸟瞰这样我就可以停止发送数百封电子邮件进行每周(这是已经难以控制)。

+0

打开的问题链接找到一个问题,左失望。 – aukaost 2010-11-24 17:16:16

回答

3

听起来就像你想创建一个输出到网页的基本日志记录系统。

因此,您可以编写一些简单的应用程序,例如systemevents,每次在网站上发生某种情况时都会创建一个Event记录。你会添加一个信号挂钩,使得该网站的任何地方休息,你可以编写类似:

from systemevents.signals import record_event 

... 

try: 
    # code goes here 
except Exception, inst: 
    record_event("Error occurred while taunting %s: %s" % (obj, inst,), type="Error") 
else: 
    record_event("Successfully taunted %s" % (obj,), type="Success") 

然后你就可以很容易地创建一个列出这些事件的视图。

但是,请记住,这是增加了一层复杂性,这是一个非常成问题的问题。如果错误在数据库中怎么办?然后每次尝试记录错误事件时都会发生另一个错误!

更好的方式是使用类似于内置日志记录系统的东西来创建基于文本的日志文件,然后掀起一些可以导入该文本文件并以更易读的方式进行布局的东西。

另一个提示:为了改变Django如何处理异常,你必须编写一个custom view for 500 errors。如果使用systemevents,你会写这样的:

from django.views.defaults import server_error 
def custom_error_view(request) 
    try: 
     import sys 
     type, value, tb = sys.exc_info()  
     error_message = "" # create an error message from the values above 
     record_event("Error occurred: %s" % (error_message,), type="Error") 
    except Exception: 
     pass 
    return server_error(request) 

注意,没有这个代码已经正确性测试。这只是一个指导。

相关问题