Przewodnik programisty: generowanie wykresu zgłoszenia serwisowego¶
W tym dokumencie opisano solidną, bezpieczną dla wątków metodę generowania wizualnego wykresu wywołań długotrwałego pliku aura_engine.py. Używamy profilera yappi (do obsługi wielowątkowości) i gprof2dot do wizualizacji.
Warunki wstępne¶
Upewnij się, że masz zainstalowane niezbędne narzędzia globalnie lub w środowisku wirtualnym:
KOD_BLOKU_0
Krok 1: Modyfikacja usługi w celu profilowania¶
Skrypt aura_engine.py musi zostać zmodyfikowany, aby ręcznie uruchomić profiler yappi i bezpiecznie zapisać dane profilowania w przypadku przerwania (Ctrl+C).
Kluczowe zmiany w aura_engine.py:
Import i obsługa sygnałów: Zaimportuj
yappii zdefiniuj funkcjęgenerate_graph_on_interrupt(jak zaimplementowano wcześniej), aby wywołaćyappi.stop()istats.save(...).Start/Stop: Dodaj
yappi.start()isignal.signal(signal.SIGINT, ...)w blokuif __name__ == "__main__":, aby zawinąć wykonaniemain(...).
Krok 2: Uruchomienie usługi i zebranie danych¶
Uruchom zmodyfikowany skrypt bezpośrednio i pozwól mu przetwarzać dane przez wystarczający czas (np. 10-20 sekund), aby upewnić się, że wszystkie podstawowe funkcje, w tym funkcje wątkowe (takie jak korekcja LanguageTool), zostaną wywołane.
KOD_BLOKU_1
Naciśnij raz Ctrl+C, aby uruchomić procedurę obsługi sygnału. Spowoduje to zatrzymanie profilera i zapisanie surowych danych w:
\mathbf{yappi\_profile\_data.prof
Krok 3: Generowanie i filtrowanie wykresu wizualnego¶
Używamy gprof2dot do konwersji surowych danych pstats na format SVG. Ponieważ zaawansowane opcje filtrowania, takie jak --include' i –threshold’ mogą nie być obsługiwane w naszym konkretnym środowisku, używamy podstawowego filtra --strip w celu oczyszczenia informacji o ścieżce i zmniejszenia bałaganu z wewnętrznych elementów systemu.
Wykonaj polecenie wizualizacji:
KOD_BLOKU_2
Krok 4: Dokumentacja (kadrowanie ręczne)¶
Wynikowy plik yappi_call_graph_stripped.svg (lub .png) będzie duży, ale dokładnie będzie zawierał pełny przebieg wykonania, łącznie ze wszystkimi wątkami.
W celach dokumentacyjnych ręcznie przytnij obraz, aby skupić się na centralnej logice (10–20 głównych węzłów i ich połączeniach), aby utworzyć ukierunkowany i czytelny wykres wywołań dla dokumentacji repozytorium.
Archiwizacja¶
Zmodyfikowany plik konfiguracyjny oraz ostateczną wizualizację Call Graph należy zarchiwizować w katalogu źródłowym dokumentacji:
Artefakt |
Lokalizacja |
|---|---|
Zmodyfikowany plik usługi |
|
Ostatecznie przycięty obraz |
|
Surowe dane profilowe |
(Opcjonalnie: Należy wyłączyć z ostatecznej dokumentacji repozytorium) |
