Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

278
Vistas
¿Omitir el registro de Flask para un punto final?

Tengo una aplicación Python Flask. Hay una comprobación de estado que afecta mucho a un punto final (/), y me gustaría no verla en los registros. ¿Cómo deshabilito el registro solo para un punto final GET y lo dejo para todo lo demás?

over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

Le sugiero que implemente un filtro de registro dedicado. Enchufe ese filtro en el registrador werkzeug interno.

También puede investigar la subclasificación del método log_request del controlador de solicitudes WSGI en https://github.com/pallets/werkzeug/blob/71cf9902012338f8ee98338fa7bba50572606637/src/werkzeug/serving.py#L378

over 4 years ago · Santiago Trujillo Denunciar

0

Étienne Bersac me indicó la dirección correcta.

Así es como lo implementé:

 from werkzeug import serving parent_log_request = serving.WSGIRequestHandler.log_request def log_request(self, *args, **kwargs): if self.path == '/healthcheck': return parent_log_request(self, *args, **kwargs) def filter_healthcheck_logs(): serving.WSGIRequestHandler.log_request = log_request
over 4 years ago · Santiago Trujillo Denunciar

0

Otra opción es mono parche WSGIRequestHandler sugerido por Étienne Bersac

Por aquí:

 from werkzeug.serving import WSGIRequestHandler from werkzeug.urls import uri_to_iri try: import click except ImportError: click = None def log_request(WSGIRequestHandler, code="-", size="-"): try: path = uri_to_iri(WSGIRequestHandler.path) if path in black_listed_routes: return msg = "%s %s %s" % (WSGIRequestHandler.command, path, WSGIRequestHandler.request_version) except AttributeError: # path isn't set if the requestline was bad msg = WSGIRequestHandler.requestline code = str(code) if click: color = click.style if code[0] == "1": # 1xx - Informational msg = color(msg, bold=True) elif code[0] == "2": # 2xx - Success msg = color(msg, fg="white") elif code == "304": # 304 - Resource Not Modified msg = color(msg, fg="cyan") elif code[0] == "3": # 3xx - Redirection msg = color(msg, fg="green") elif code == "404": # 404 - Resource Not Found msg = color(msg, fg="yellow") elif code[0] == "4": # 4xx - Client Error msg = color(msg, fg="red", bold=True) else: # 5xx, or any other response msg = color(msg, fg="magenta", bold=True) WSGIRequestHandler.log("info", '"%s" %s %s', msg, code, size) def monkey_patch_logger(): WSGIRequestHandler.log_request = log_request
over 4 years ago · Santiago Trujillo Denunciar

0

Esta es una implementación ligeramente modificada basada en la respuesta de mpaepper .

Permite especificar los puntos finales de registro deshabilitados usando expresiones regulares. Esto puede ser útil cuando desea ignorar los registros de puntos finales como "/v1/recipes/<int:recipe_id>" :

 def disable_endpoint_logs(): """Disable logs for requests to specific endpoints.""" disabled_endpoints = ('/', '/healthz', '/v1/recipes/[0-9]+') parent_log_request = serving.WSGIRequestHandler.log_request def log_request(self, *args, **kwargs): if not any(re.match(f"{de}$", self.path) for de in disabled_endpoints): parent_log_request(self, *args, **kwargs) serving.WSGIRequestHandler.log_request = log_request

Con el código anterior, los registros del extremo "/v1/recipes/23992341" se ignorarían, pero los de "/v1/recipes" no se ignorarían.

Simplemente llame a esta función una vez en su código y estará listo para comenzar.

over 4 years ago · Santiago Trujillo Denunciar

0

Las otras soluciones presentadas son correctas y funcionan para Werkzeug en una configuración predeterminada de Flask. El mismo enfoque también funciona cuando se usa Flask con gevent, pero decidió publicarlo aquí en caso de que alguien más lo encuentre y necesite el código de inmediato:

 from gevent.pywsgi import WSGIHandler class CustomWSGIHandler(WSGIHandler): def log_request(self): requests_to_ignore = ["/health", "/"] if self.path in requests_to_ignore: return super(CustomWSGIHandler, self).log_request()
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda