automatisch verfolgen.¶
logfire.install_auto_tracing Alle Funktionsaufrufe in dem angegebenen Modul werden verfolgt.
Dies wird durch eine Änderung der Importmethode dieser Module erreicht, sodass diese Funktion aufgerufen werden muss, bevor das Modul importiert wird, das verfolgt werden soll.
Nehmen wir zum Beispiel an, dass sich Ihr gesamter Code befindet.应用程序 Packen, zum Beispiel app.main、app.server、app.db Warte, du kannst da sein.应用程序 Erstellen Sie eine andere Datei außerhalb des Pakets, anstatt es zu verwenden python app/main.py Starten von Anwendungen, z. B.:
import logfire
logfire.configure()
logfire.install_auto_tracing(modules=['app'])
from app.main import main
main()
Filtern Sie die zu überwachenden Module.¶
modules Die Parameter können eine Liste der Modulnamen sein, wobei alle Untermodule innerhalb eines bestimmten Moduls auch verfolgt werden, z.B. app.main und app.server Andere Module, deren Namen mit dem gleichen Präfix beginnen, werden nicht nachverfolgt, z. B.苹果。
Wenn eine der Zeichenketten in der Liste kein gültiger Modulname ist, wird sie als regulärer Ausdruck behandelt, z.B.modules=['app.*']. außer app.main wird auch 苹果 folgen.
Um mehr Kontrolle zu erlangen,modules Ein Parameter kann eine Funktion sein, die ein Modul zurückgibt, das verfolgt werden soll. True Diese Funktion wird verwendet. [AutoTraceModule][logfire 调用。AutoTraceModule] Ziel, das die Zielperson hat. name und filename Eigenschaften Dies sollte beispielsweise alle Module in einer typischen Python-Installation verfolgen, die nicht Teil der Standardbibliothek oder eines Pakets von Drittanbietern sind:
import pathlib
import logfire
PYTHON_LIB_ROOT = str(pathlib.Path(pathlib.__file__).parent)
def should_trace(module: logfire.AutoTraceModule) -> bool:
return not module.filename.startswith(PYTHON_LIB_ROOT)
logfire.install_auto_tracing(should_trace)
Funktionen vom Tracking ausschließen.¶
Sobald Sie die Module ausgewählt haben, die Sie verfolgen möchten, möchten Sie möglicherweise keine in diesen Modulen verfolgen._Jeder von_Funktionen Um eine Funktion von der automatischen Ablaufverfolgung auszuschließen, fügen Sie sie hinzu. no_auto_trace Dekorationsgerät:
import logfire
@logfire.no_auto_trace
def my_function():
# 嵌套函数也将被排除在外
def inner_function():
...
return other_function()
# 此功能*不*从自动跟踪中排除。
# 即使从上面排除的 'my_function' 调用,它仍然会被追踪。
def other_function():
...
# 修饰类的所有方法也将被排除在外
@no_auto_trace
class MyClass:
def my_method(self):
...
Wenn beim Import ein Dekorator erkannt wird, der nur @no_auto_trace oder @logfire.no_auto_trace unterstützt, funktioniert eine Umbenennungs-/Aliasfunktion oder ein Modul nicht und wird nicht indirekt durch eine andere Funktion aufgerufen.
Dieser Dekorator gibt nur die unveränderten Parameter zurück, sodass der Runtime-Overhead Null ist.
Nur Funktionen nachverfolgen, die die minimale Dauer überschreiten¶
Eine bequemere Möglichkeit, Funktionen von einer Ablaufverfolgung auszuschließen, besteht darin, den Parameter [min_duration ][] [logfire.Logfire.install_auto_tracing(min_duration)] festzulegen, zum Beispiel:
# Only trace functions that take longer than 0.1 seconds
logfire.install_auto_tracing(modules=['app'], min_duration=0.1)
Dies bedeutet, dass Sie automatisch einen Überblick über die wichtigsten Teile Ihrer Anwendung erhalten können, ohne viel Aufwand oder Daten zu erfordern.
-
Eine Funktion wird erst verfolgt, wenn sie mehr als
min_durationMal ausgeführt wurde, was bedeutet:-
Wenn es schneller als die vorherigen
min_duration-Aufrufe ausgeführt wird, haben Sie keinen Zugriff auf Daten über diese ersten Aufrufe. -
Wenn Sie mehr als
min_durationzum ersten Mal ausführen, erhalten Sie auch keine Daten über den Aufruf.
-
-
Wenn eine Funktion mehr als
min_duration-mal ausgeführt wird, wird sie jedes Mal verfolgt, wenn sie aufgerufen wird, unabhängig davon, wie lange es dauerte. -
Das Messen der Dauer von Funktionsaufrufen erhöht immer noch den Overhead um einen kleinen Teil für sehr häufige Aufrufe, und es ist besser, immer noch den
@no_auto_trace-Dekorator zu verwenden, um Kosten zu vermeiden Auto-Tracking mitmin_durationfunktioniert auch für andere nicht modifizierte Funktionen.
本文总阅读量次