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下载并将位图设置为列表视图   java有用于MyBatis XML sqlmaps的Javadoc样式的文档工具吗?   放置属性文件的位置,以便java命令在类路径中看到它   使用jschexception验证false的java SSH有时会失败   java如何在Android中使用MPAndroidChart定制饼图?   java如何使用R.String初始化字符串。文本   BeanValidation的java上下文相关验证   java反射:通过反射加载的类中的常量变量   安卓 Java使用相同的规则压缩多个字符串   公告命令中的java换行符不工作   带有整数、字符串和项目符号列表的java txt文件(1.)   arraylist Connect四代码(Java)列放置不工作   用于多个报告的java jasper页面编号   java如何消除Nimbus LAF中按钮周围的空间?   安卓 setImageResource内置自定义ArrayAdapter。lang.NullPointerException   java Android将Json转换为ArrayList多级可扩展列表视图   java Eclipse,Web工具平台,导致JSP中找不到元素错误,但一切正常