Daniel Roy Greenfeld: Air-Apps... Notiz

Daniel Roy Greenfeld: Air-Apps mit pyinstrument profilieren

Air, basierend auf FastAPI, kann pyinstrument für Performance-Profiling nutzen. Um dies zu ermöglichen, installieren Sie sowohl air[standard] als auch pyinstrument. Der Beispielcode zeigt, wie pyinstrument integriert wird, indem es bedingt auf Basis einer Umgebungsvariablen namens PROFILING aktiviert wird. Dies ist entscheidend, um Performance-Overhead in Produktionsumgebungen zu vermeiden. Eine Middleware-Funktion, profile_request, fängt HTTP-Anfragen ab. Wenn ein profile-Query-Parameter vorhanden ist, beginnt pyinstrument mit dem Profiling. Nachdem die Anfrage von call_next verarbeitet wurde, stoppt pyinstrument und gibt eine HTML-Ausgabe der Profiling-Ergebnisse zurück. Dies ermöglicht eine visuelle Inspektion von Performance-Engpässen. Die Anwendung enthält eine index-Seite mit Links, um Verzögerungen mit asyncio.sleep zu simulieren. Diese Links können mit dem profile=1-Query-Parameter aufgerufen werden, um das Profiling auszulösen. Um die Anwendung mit aktiviertem Profiling auszuführen, ohne die Umgebungsvariable dauerhaft zu setzen, stellen Sie dem Befehl des Entwicklungsservers PROFILING=1 voran. Zum Beispiel aktiviert PROFILING=1 fastapi dev main.py das Profiling für diesen spezifischen Lauf. Die Profiling-Ergebnisse können dann durch Aufrufen von http://localhost:8000 in Ihrem Browser eingesehen werden.
CdXz5zHNQW_NqUVTOcpDB.png