Tengo una aplicación FastAPI que he implementado usando el servidor UVICORN. Mi requisito es tal que tengo que registrar cada solicitud entrante en el nivel UVICORN y también decodificar el token JWT que contiene el encabezado de la solicitud entrante, registrar eso también, en el nivel UVICORN.
He estado tratando de entender la biblioteca UVICORN y entender el código. Hasta ahora, esto es lo que he encontrado de su representante de GitHub:
https://github.com/encode/uvicorn/blob/df8b49f6779b9de508416ad3823bac868bb8efcf/uvicorn/protocols/http/httptools_impl.py#L128-L138 (código a continuación)
def data_received(self, data): self._unset_keepalive_if_required() try: self.parser.feed_data(data) except httptools.HttpParserError as exc: msg = "Invalid HTTP request received." self.logger.warning(msg, exc_info=exc) self.transport.close() except httptools.HttpParserUpgrade: self.handle_upgrade()Con un poco de éxito y prueba, descubrí que el parámetro de datos que recibe esta función contiene toda la carga útil de la solicitud entrante como una cadena de bytes. Pero todavía no puedo ubicar el lugar exacto donde puedo encontrar la solicitud entrante y sus datos.
¿Dónde puedo encontrar todas las solicitudes entrantes y realizar mi registro? No quiero parchear el código UVICORN, estoy buscando una forma sensata de lograr el propósito.