如何让Raven向Sentry报告Django runcript异常?

时间:2015-05-26 16:59:42

标签: django sentry raven

我的Django网络应用程序通过乌鸦将例外记录到Sentry。我还运行了许多脚本(通过manage.py runscript)作为cron作业。目前,这些脚本中的任何异常都没有报告给Sentry。如何设置此类报告?

2 个答案:

答案 0 :(得分:1)

从raven-python的5.3.1版开始,它应该正确修补Django的BaseCommand.execute,它可以有效地处理这些命令中的错误(除非永远不会进行父调用)。

答案 1 :(得分:0)

对于那些那些:

  1. 还有一个raven没有正确修补django管理命令的问题

  2. 让Django == 1.6.11

  3. 避风港== 5.12.0
  4. 我找到了一个适合我的修复程序。

    问题似乎是,当Django调用它时,raven不会修补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)