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.
air[standard]als auchpyinstrument. Der Beispielcode zeigt, wie pyinstrument integriert wird, indem es bedingt auf Basis einer Umgebungsvariablen namensPROFILINGaktiviert wird. Dies ist entscheidend, um Performance-Overhead in Produktionsumgebungen zu vermeiden. Eine Middleware-Funktion,profile_request, fängt HTTP-Anfragen ab. Wenn einprofile-Query-Parameter vorhanden ist, beginnt pyinstrument mit dem Profiling. Nachdem die Anfrage voncall_nextverarbeitet 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 eineindex-Seite mit Links, um Verzögerungen mitasyncio.sleepzu simulieren. Diese Links können mit demprofile=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 EntwicklungsserversPROFILING=1voran. Zum Beispiel aktiviertPROFILING=1 fastapi dev main.pydas Profiling für diesen spezifischen Lauf. Die Profiling-Ergebnisse können dann durch Aufrufen vonhttp://localhost:8000in Ihrem Browser eingesehen werden.