Ошибка выброса воздушного тормоза "pybrake - ERROR - strconv.ParseInt: разбор"None": неверный синтаксис"

Я пытаюсь использовать регистратор Airbrake в проекте Django, следуя шагам, описанным в https://github.com/airbrake/pybrake.

Я настроил мой 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, 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/, что strconv.ParseInt на самом деле встроенная функция языка Go, поэтому я не понимаю, почему pybrake, который является пакетом Python, выдает эту ошибку, или как ее отладить. Кто-нибудь может объяснить эту ошибку?

1 ответ

Решение

Похоже сам сервер тормозного тормоза написан на Go.

Это можно сделать из следующих фактов:

  • На своей странице "О нас" ( https://airbrake.io/about) они перечисляют одного из своих участников в качестве "ведущего разработчика Go" и говорят, что они "используют Go с версии до 1.0". Также в описании своего технического директора они говорят, что ему нравится "взламывать свой дом с помощью Go".

  • Вы получаете strconv.ParseInt (Go) ошибка из Python

  • Есть отчет о получении также strconv.ParseInt от использования клиента Ruby для сообщения об ошибках воздушного тормоза ( https://github.com/airbrake/airbrake/issues/502)

Таким образом, объяснение этой ошибки может заключаться в том, что клиент Python получает эту ошибку от сервера при отправке отчета и регистрирует ее.

Что касается того, как отладить это, я бы сказал, что лучшим способом было бы перехватить запрос, который клиент отправляет на сервер.

Вы можете сделать это, например, изменив код здесь, чтобы он указывал на ваш собственный сервер вместо воздушного тормоза и регистрировал запросы:

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

Или как-то перехватить HTTP-трафик.

Вы, вероятно, увидите данные формы JSON/XML/HTTP, в которых к свойству будет присвоено значение "None", которое вместо этого должно быть числом, что приведет к возникновению этой ошибки на стороне сервера.

Другие вопросы по тегам