python - 气刹 throw 错误 "pybrake - ERROR - strconv.ParseInt: parsing "无“: invalid syntax"

标签 python django go logging airbrake

我正在尝试按照 https://github.com/airbrake/pybrake#django-integration 中描述的步骤在 Django 项目中使用 Airbrake 记录器。 .

我已经像这样配置了我的 LOGGING 设置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'airbrake': {
            'level': 'ERROR',
            'class': 'pybrake.LoggingHandler',
        }
    },
    'loggers': {
        'lucy_web': {
            'handlers': ['airbrake'],
            'level': 'ERROR',
            'propagate': True,
        }
    }
}

然后,在 lucy_web 层次结构中名为 lucy_web/lib/session_recommendation.py 的特定文件中,我有以下测试函数:

import logging

logger = logging.getLogger(__name__)

def log_something():
    logger.error("Logging something...")

但是,如果我尝试从 Django shell 调用此函数,pybrake 本身会记录错误:

strconv.ParseInt: parsing "None": invalid syntax

下面是完整的命令序列:

(venv) Kurts-MacBook-Pro-2:lucy-web kurtpeek$ python manage.py shell
Python 3.6.4 (v3.6.4:d48ecebad5, Dec 18 2017, 21:07:28) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from lucy_web.lib.session_recommendation import *

In [2]: log_something()

In [3]: 2018-05-30 17:25:32,201 - pybrake - ERROR - strconv.ParseInt: parsing "None": invalid syntax

它会出现在https://golang.org/pkg/strconv/#ParseInt那个strconv.ParseInt其实是Go语言的内置函数,所以我不明白为什么pybrake这个Python包会抛出这个错误,或者如何调试它。谁能解释这个错误?

最佳答案

看来 airbrake 服务器本身是用 Go 编写的。

这可以从以下事实推断:

  • 在他们的“关于”页面 (https://airbrake.io/about),他们将他们的一名成员列为他们的“Lead Go 开发人员”,并说他们“从 1.0 之前就开始使用 Go”。在他们的 CTO 描述中,他们还说他喜欢“用 Go 破解他的家”。

  • 您收到来自 Python 的 strconv.ParseInt (Go) 错误

  • 有一份报告显示,使用 Ruby 客户端报告减速板错误时也会得到 strconv.ParseInt (https://github.com/airbrake/airbrake/issues/502)

所以对错误的解释是 Python 客户端在发送报告并记录此错误时从服务器获取此错误。

至于如何调试,我认为最好的方法是捕获客户端发送到服务器的请求。

例如,您可以通过修改此处的代码以指向您自己的服务器而不是 airbrake 的服务器并记录请求来执行此操作:

https://github.com/airbrake/pybrake/blob/master/pybrake/notifier.py#L41

或者以某种方式捕获 HTTP 流量。

您可能会看到一个 JSON/XML/HTTP 表单数据,其中将有一个“无”值附加到一个应该是数字的属性,这将在服务器端引发此错误。

关于python - 气刹 throw 错误 "pybrake - ERROR - strconv.ParseInt: parsing "无“: invalid syntax",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50615078/

相关文章:

python - MySQL 选择查询不适用于限制、偏移参数

python - 为什么 Python 2.7 对 x64 上的 GetDC() 返回的 HDC 进行签名扩展?

python - 如何使用python并行查询数据库

mysql - 使用数据库路由器在应用程序 Django 之间共享 (mysql) 数据库

json - 如何将json文件读入 map

python - 如何在 Pyscript 中获取显示消息

python - 在 Django 中提供动态生成的 ZIP 文件

python - UserManager 中的 Django set_password() 方法正在保存纯文本

security - 果阿中的用户感知操作

go - 当golang关闭 channel 时,接收者goroutine永远不会被阻塞