代码之家  ›  专栏  ›  技术社区  ›  Kurt Peek

空气制动抛出错误“pybrake-error-strconv.parseint:解析“none”:无效语法”

  •  4
  • Kurt Peek  · 技术社区  · 6 年前

    我正尝试在Django项目中使用空气制动记录器,步骤如下 https://github.com/airbrake/pybrake#django-integration .

    我已经配置了 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:解析“none”:无效语法

    下面是完整的命令序列:

    (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语言的一个内置函数,所以我不明白为什么 皮布雷克 ,这是一个python包,正在抛出此错误或如何调试它。有人能解释这个错误吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   eugenioy    6 年前

    似乎airbrake服务器本身就是用go编写的。

    这可以从以下事实推断:

    • 在他们的“关于”页面( https://airbrake.io/about )他们将其中一个成员列为“首席go开发人员”,并表示“从1.0之前就开始使用go”。在CTO的描述中,他们还说他喜欢“带着GO去他的家”。

    • 你得到一个 strconv.ParseInt 来自python的(go)错误

    • 有报道称 strconv.parseInt文件 使用ruby客户端报告airbrake错误( https://github.com/airbrake/airbrake/issues/502 )

    因此,错误的解释是,python客户机在发送报告并记录此错误时从服务器获取此错误。

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

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

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

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

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