【发布时间】:2015-05-26 16:59:42
【问题描述】:
我的 Django Web 应用通过 raven 将异常记录到 Sentry。我还运行一些脚本(通过manage.py runscript)作为 cron 作业。目前,这些脚本中的任何异常都不会报告给 Sentry。如何设置此类报告?
【问题讨论】:
我的 Django Web 应用通过 raven 将异常记录到 Sentry。我还运行一些脚本(通过manage.py runscript)作为 cron 作业。目前,这些脚本中的任何异常都不会报告给 Sentry。如何设置此类报告?
【问题讨论】:
从 raven-python 的 5.3.1 版开始,它应该正确修补 Django 的 BaseCommand.execute,这将有效地处理这些命令中的错误(除非从未进行过父调用)。
【讨论】:
对于那些:
仍然存在 raven 没有为 django 管理命令正确修补自身的问题
有 Django==1.6.11
我找到了适合我的修复程序。
问题似乎是 raven 在 Django 调用它时没有修补 BaseCommand.execute。因此,为了解决这个问题,我确保立即修补 BaseCommand.execute。我更新了我的manage.py 文件以包含以下几行:
from raven.contrib.django.management import patch_cli_runner
patch_cli_runner()
我的最终manage.py 文件如下所示:
#!/usr/bin/env python
from os.path import abspath
from os.path import dirname
import os
import sys
if __name__ == "__main__":
# add the ../ directory to the os path, so that we can find
# app.settings below
sys.path.insert(0, os.path.abspath(os.path.join(dirname(abspath(__file__)), '..')))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
from django.core.management import execute_from_command_line
from raven.contrib.django.management import patch_cli_runner
patch_cli_runner()
execute_from_command_line(sys.argv)
【讨论】: