Estoy usando Python y Flask, atendidos por Waitress, para alojar una API POST . Llamo a la API desde un programa C# que publica datos y obtiene una respuesta de cadena. Al menos el 95% de las veces, funciona bien, pero a veces el programa C# informa un error: (500) Internal Server Error .
No hay más descripción del error o por qué ocurre. La única pista es que generalmente ocurre en grupos: cuando el error ocurre una vez, es probable que ocurra varias veces seguidas. Sin ninguna intervención, vuelve a funcionar normalmente.
Dado que el error es tan raro, es difícil solucionarlo. ¿Alguna idea sobre cómo depurar u obtener más información? ¿Hay un manejo de errores que pueda hacer desde el lado de C# o desde el lado de Flask/Waitress?
Su aplicación de matraz debería registrar la excepción cuando ocurra. Además de revisar sus registros (que deben almacenarse en algún lugar central), podría considerar algo como Sentry.io, que es bastante fácil de configurar con las aplicaciones Flask.
Flask admite el registro de controladores de errores . La definición de controladores de errores permite personalizar los registros de errores del servidor y devolver información más significativa al cliente.
import logging import traceback from flask import Flask, jsonify from werkzeug.exceptions import HTTPException app = Flask(__name__) logger = logging.getLogger() @app.errorhandler(HTTPException) def handle_http_exception(error): error_dict = { 'code': error.code, 'description': error.description, 'stack_trace': traceback.format_exc() } log_msg = f"HTTPException {error_dict.code}, Description: {error_dict.description}, Stack trace: {error_dict.stack_trace}" logger.log(msg=log_msg) response = jsonify(error_dict) response.status_code = error.code return response