Interface avec FastAPI¶
Logfirecombine les outils personnalisés et tiers de FastAPI avec la méthode logfire.instrument_fastapi() .
Installation de¶
Installer logfire avec fastapi extra:
{{ install_logfire(extras=['fastapi']) }}
Utilisation de¶
Nous avons un exemple minimal ci-dessous. veuillez installer Uvicorn pour l'exécuter:
pip install uvicorn
Vous pouvez l'exécuter avec python main.py:
import logfire
from fastapi import FastAPI
app = FastAPI()
logfire.configure()
logfire.instrument_fastapi(app)
@app.get("/hello")
async def hello(name: str):
return {"message": f"hello {name}"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app)
Ensuite, visitez http://localhost:8000/hello?name= world et consultez le journal.
OpenTelemetry FastAPI pile plug-in¶
Troisième partie OpenTelemetry FastAPI Instrumentation Les paquets ajoutent une étendue à chaque requête, qui contient des attributs détaillés sur la requête HTTP, tels que l'URL complète et l'agent utilisateur. Avec les heures de début et de fin, vous pouvez voir combien de temps il faut pour traiter chaque requête.
[logfire.instrument_fastapi()][logfire. par défaut, Logfire.instrument_fastapi] applique cette détection. Vous pouvez la désactiver en passant use_opentelemetry_instrumentation=False.
logfire.instrument_fastapi() accepte également des paramètres de mots-clés supplémentaires arbitraires et les passe à la méthode OpenTelemetry FastAPIInstrumentor.instrument_app().
Logfire Pile: enregistrement des paramètres de fin de session et validation des erreurs¶
logfire.instrument_fastapi() émettra pour chaque requête un intervalle appelé FastAPI 参数 qui indique le temps nécessaire à FastAPI pour analyser et valider les paramètres de la fonction de point final dans la requête et résoudre les dépendances.
-
values: Un dictionnaire qui mappe les noms des paramètres des fonctions de terminaison aux valeurs résolues et validées. -
errors: Une liste d'erreurs de validation pour toute entrée non valide.
Vous pouvez le faire en mettant request_attributes_mapper La fonction passe à la instrument_fastapi pour personnaliser cette fonction. cette fonction va travailler avec Request ou bien WebSocket L'objet est appelé avec le dictionnaire d'attributs par défaut. il devrait retourner un nouveau dictionnaire d'attributs, ou retourner None Définissez le niveau d'étendue sur "débogage" afin qu 'il soit masqué par défaut. exemple:
import logfire
app = ...
def request_attributes_mapper(request, attributes):
if attributes["errors"]:
# Only log validation errors, not valid arguments
return {
"errors": attributes["errors"],
"my_custom_attribute": ...,
}
else:
# Don't log anything for valid requests
return None
logfire.configure()
logfire.instrument_fastapi(app, request_attributes_mapper=request_attributes_mapper)
Attention
[request_attributes_mapper][logfire.Logfire.instrument_fastapi(request_attributes_mapper)] La fonction ne doit pas changer 值 ou bien 错误 contenu, mais il peut les remplacer en toute sécurité par de nouvelles valeurs.
Exclure les URL de la détection¶
Pour éviter le suivi de certaines URL, vous pouvez spécifier une chaîne d'expressions rationnelles séparées par des virgules qui correspondront à l'URL complète de la requête.
-
instrument_fastapitel que [excluded_urls][logfire.Logfire.instrument_fastapi(excluded_urls)], par exemple:logfire.instrument_fastapi(app, excluded_urls='/health') -
Variable d'environnement
OTEL_PYTHON_FASTAPI_EXCLUDED_URLS. -
Variable d'environnement
OTEL_PYTHON_EXCLUDED_URLS(ceci s'applique également à d'autres tests).
Capture des en-têtes de demande et de réponse¶
本文总阅读量次