Guía para desarrolladores: generación del gráfico de llamadas de servicio¶
Este documento describe el método robusto y seguro para subprocesos para generar un gráfico de llamadas visual del aura_engine.py de larga duración. Usamos el perfilador yappi (para soporte de subprocesos múltiples) y gprof2dot para visualización.
Requisitos previos¶
Asegúrese de tener las herramientas necesarias instaladas globalmente o en su entorno virtual:
# Required Python libraries for profiling
pip install yappi gprof2dot
# Required system library for visualization
# Linux: sudo apt install graphviz
Paso 1: Modificar el servicio de creación de perfiles¶
El script aura_engine.py debe modificarse para iniciar manualmente el generador de perfiles yappi y guardar correctamente los datos del perfil en caso de interrupción (Ctrl+C).
Cambios clave en aura_engine.py:
Importaciones y controlador de señales: Importe
yappiy defina la funcióngenerate_graph_on_interrupt(como se implementó anteriormente) para llamar ayappi.stop()ystats.save(...).Iniciar/Detener: Agregue
yappi.start()ysignal.signal(signal.SIGINT, ...)dentro del bloqueif __name__ == "__main__":para ajustar la ejecución demain(...).
Paso 2: ejecutar el servicio y recopilar datos¶
Ejecute el script modificado directamente y permita que procese los datos durante un tiempo suficiente (por ejemplo, de 10 a 20 segundos) para garantizar que se llamen a todas las funciones principales, incluidas las de subprocesos (como la corrección de LanguageTool).
# Execute the service directly (do NOT use the pycallgraph wrapper)
python3 aura_engine.py
Presione Ctrl+C una vez para activar el controlador de señales. Esto detendrá el generador de perfiles y guardará los datos sin procesar en:
\mathbf{yappi\_profile\_data.prof
Paso 3: Generar y filtrar el gráfico visual¶
Usamos gprof2dot para convertir los datos sin procesar de pstats al formato SVG. Dado que es posible que nuestro entorno específico no admita opciones de filtrado avanzadas como --include y --threshold, utilizamos el filtro básico --strip para limpiar la información de ruta y reducir el desorden interno del sistema.
Ejecute el comando de visualización:
python3 -m gprof2dot -f pstats yappi_profile_data.prof --strip | dot -Tsvg -o yappi_call_graph_stripped.svg
Paso 4: Documentación (Recorte manual)¶
El archivo resultante yappi_call_graph_stripped.svg (o .png) será grande, pero contiene con precisión el flujo de ejecución completo, incluidos todos los subprocesos.
Para fines de documentación, recorte manualmente la imagen para centrarse en la lógica central (los 10 a 20 nodos centrales y sus conexiones) para crear un gráfico de llamadas enfocado y legible para la documentación del repositorio.
Archivar¶
El archivo de configuración modificado y la visualización final de Call Graph deben archivarse en el directorio fuente de la documentación:
Artefacto |
Ubicación |
|---|---|
Archivo de servicio modificado |
|
Imagen recortada final |
|
Datos de perfil sin procesar |
(Opcional: debe excluirse de la documentación final del repositorio) |
