减速板投掷错误 "pybrake - ERROR - strconv.ParseInt: parsing "None“:语法无效”
Airbrake throwing error "pybrake - ERROR - strconv.ParseInt: parsing "None": invalid syntax"
我正尝试按照 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 写的。
这可以从以下事实推断出来:
在他们的 "About" 页面 (https://airbrake.io/about) 中,他们将他们的一名成员列为他们的 "Lead Go developer",并说他们已经 "using Go since before 1.0"。同样在他们的 CTO 描述中,他们说他喜欢 "hacking his home with Go".
您收到来自 Python
的 strconv.ParseInt
(Go) 错误
有一份报告称,使用 Ruby 客户端报告减速板错误 (https://github.com/airbrake/airbrake/issues/502)
[= 也得到了 strconv.ParseInt
41=]
所以对错误的解释是 Python 客户端在发送报告并记录此错误时从服务器收到此错误。
至于如何调试,我认为最好的方法是捕获客户端发送到服务器的请求。
例如,您可以通过修改此处的代码以指向您自己的服务器而不是 airbrake 的服务器并记录请求来执行此操作:
https://github.com/airbrake/pybrake/blob/master/pybrake/notifier.py#L41
或者以某种方式捕获 HTTP 流量。
您可能会看到一个 JSON/XML/HTTP 表单数据,其中将有一个 "None" 值附加到 属性 上,该值应该是一个数字,然后会引发此问题服务器端错误。
我正尝试按照 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 写的。
这可以从以下事实推断出来:
在他们的 "About" 页面 (https://airbrake.io/about) 中,他们将他们的一名成员列为他们的 "Lead Go developer",并说他们已经 "using Go since before 1.0"。同样在他们的 CTO 描述中,他们说他喜欢 "hacking his home with Go".
您收到来自 Python
的 有一份报告称,使用 Ruby 客户端报告减速板错误 (https://github.com/airbrake/airbrake/issues/502)
[= 也得到了strconv.ParseInt
41=]
strconv.ParseInt
(Go) 错误
所以对错误的解释是 Python 客户端在发送报告并记录此错误时从服务器收到此错误。
至于如何调试,我认为最好的方法是捕获客户端发送到服务器的请求。
例如,您可以通过修改此处的代码以指向您自己的服务器而不是 airbrake 的服务器并记录请求来执行此操作:
https://github.com/airbrake/pybrake/blob/master/pybrake/notifier.py#L41
或者以某种方式捕获 HTTP 流量。
您可能会看到一个 JSON/XML/HTTP 表单数据,其中将有一个 "None" 值附加到 属性 上,该值应该是一个数字,然后会引发此问题服务器端错误。