Ошибка выброса воздушного тормоза "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", которое вместо этого должно быть числом, что приведет к возникновению этой ошибки на стороне сервера.