Как использовать отчет об ошибках из GCE с Docker и Django?
Я запускаю Django на вычислительном движке с помощью Docker. Я хотел бы знать, как проверить ошибку в отчете об ошибках, когда приложение сталкивается с ошибкой типа Cloud run.
Я изучаю, как настроить отчет об ошибках в Python. https://github.com/googleapis/python-error-reporting/tree/main/samples/snippets/fluent_on_compute
Глядя на этот пример, похоже, что мне нужно поднять исключение и выполнить report (traceback.format_exc ())
, чтобы использовать отчет об ошибках.
def simulate_error():
fluent.sender.setup('myapp', host='localhost', port=24224)
def report(ex):
data = {}
data['message'] = '{0}'.format(ex)
data['serviceContext'] = {'service': 'myapp'}
# ... add more metadata
fluent.event.Event('errors', data)
# report exception data using:
try:
# simulate calling a method that's not defined
raise NameError
except Exception:
report(traceback.format_exc())
Когда я запускаю Django, я получаю ошибку, отличную от использования try: execpt
.
Как я могу отобразить такие ошибки в отчете об ошибках?
Пожалуйста, дайте мне знать, если есть какой-либо хороший способ. спасибо.
Django предоставляет возможность определить настраиваемый обработчик исключений.
Вы можете определить пользовательский обработчик исключений, как показано ниже,
from google.cloud import error_reporting
from rest_framework.views import exception_handler
# Initialize Error reporting client
client = error_reporting.Client()
def custom_exception_handler(exc, context):
# Call REST framework's default exception handler first,
# to get the standard error response.
response = exception_handler(exc, context)
# Send error to Error Reporting
client.report(response)
return response
В вашем файле настроек добавьте следующую конфигурацию,
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler'
}
Для установки библиотеки отчетов об ошибках облака google используйте следующую команду
pip install google-cloud-error-reporting
Для получения информации о настройке отчетов об ошибках в python, обратитесь к this