django的可重用应用程序,可以收集未被排除的异常并生成压缩的报告,就像在调试模式下从芹菜任务中获得并存储在数据库中一样。

django-celery-errorlog的Python项目详细描述


Django芹菜错误日志

Django的可重用应用程序,以收集未经授权的异常并生成 comprehansive报告就像在调试模式下得到并存储在 芹菜数据库任务

简介

这是 django-errorlog到 支持芹菜任务和其他一些功能。我喜欢芹菜, 但有时当芹菜任务代码中隐藏错误时, 代码已经作为deamon运行在 生产服务器,您将发现很难跟踪和调试错误。 更重要的是,当发生未处理的异常时,这也意味着 任务失败,发送到此任务的参数将丢失。到 解决这个问题,这个应用程序将你的任务函数包装在一个数据库中 事务,当包装器捕获未处理的异常时,它 将执行以下操作:

  1. 回滚此事务
  2. 获取异常和回溯以生成HTML错误报告 当DEBUG=True时,与django内置500页相同,其中 包含堆栈跟踪以及每个堆栈中的变量。使 调试起来容易得多。
  3. 记录此任务的参数
  4. 对错误进行分类

所以,发生错误后,您可以检查 CeleryError.unfixed_errors,然后修复代码,重新启动工作进程, 然后运行error.fix()将此任务再次发送回队列 确保所有任务都将运行。

如果在修复代码之前执行error.fix(),则不会 重要的是,因为即使是旧的错误也被标记为已修复,因为 同样的错误将再次引发,因此您将得到新的错误 参数。

更改日志

2016-12-04:0.1.0初始提交。从网上拆分代码 项目。编写文档,并添加测试。

安装

pip install django-celery-errorlog

然后修改设置

  1. 遵循的指示 django-errorlog到 正确设置
  2. 正确设置djaceleri
  3. errorlog
  4. 之后将djcelery-errorlog添加到INSTALLED_APPS

然后执行python manage.py migrate以设置数据库表。

用法

在tasks.py中,必须更改shared_taskperiodic_taskcelerydjcelery_errorlog进行 错误日志工作,下面是示例

# -*- coding: utf-8 -*-fromdjcelery_errorlogimportshared_task@shared_task(name="tests")deftests(**kwargs):raiseValueError(kwargs)

就这样,现在当有未修补的异常被抛出时, 芹菜错误将记录调用参数和堆栈跟踪。

内置shell命令(与django errorlog相同)

>>>fromdjcelery_errorlog.modelsimportCeleryError>>>CeleryError.unfixed_errors{0:<CeleryError:1-test1-ValueError:A>,1:<CeleryError:4-test2-ValueError:B>}>>>error=CeleryError.unfixed_errors[1]>>>error1:<CeleryError:4-test1-ValueError:B>>>># in this repr, the first number is the index to make it easy to select;>>># the second number 4 is the the count of the same error happened;>>># test1 is the name of the task;>>># ValueError is the exception type;>>># B is the args in the exception.>>>error.vcs_rev# the git/hg version of error, for hg, it's the incremental number that is orderable"1">>>error.ignore()# this command ignore the whole 4 error logs

修正错误

在根据跟踪到的错误修复代码之后,可以 error.fix([queue="queue_name"])获取具有相同参数的任务 再跑一次。记住,当您对一个错误运行fix时,所有相同的错误都将 交给芹菜工人并标记为固定的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在java字符串中获取RATE的值   java ANT在哪里输出编译器错误?   在java中,while循环在何处启动对象   javacom。谷歌。格森。内部的LinkedTreeMap无法强制转换到我的类   java单选按钮。isSelected()方法未返回正确的响应   嵌入式系统中applet中的java相对码基字段   如何在eclipse中将Java应用程序附加到jvm探查器?   java为什么Android应用程序崩溃?   在java中拖放上传后保持文件夹结构   爪哇多领导人选举问题   java Springs RestTemplate如何处理postForEntity()中的错误响应   Java如何用前导零递增整数字符串?   java Android将文本作为图像共享给其他应用程序   Java搜索替换   java isDirectory()不适用于UNIX目录   java我们可以得到显示测试类是否通过或失败的TestNG报告吗   Java类对象排序和分组   简单Java幂递归   java在处理MethodArgumentNotValidException时如何访问请求对象?