Găzduim un API REST scris în Python pe Azure Functions și folosim Logare
să-l monitorizeze.
Uneori, nu toate rezultatele așteptate sunt afișate în Application Insights.
Iată un exemplu despre cum ar trebui să arate:
2021-10-26T18:44:13Z [Verbose] Trimitere ID invocare:64be8d30-a3ff-41d0-a653-de20c48db85a
2021-10-26T18:44:13Z [Verbose] Postarea codului de invocare:64be8d30-a3ff-41d0-a653-de20c48db85a pe workerId:834c70c0-d3bd-4dab-89b776-c8c
2021-10-26T18:44:13Z [Informații] **************************************** **************************
2021-10-26T18:44:13Z [Informații] AzureResourceClient inițializat în: 0 milisecunde
2021-10-26T18:44:13Z [Informații] Timer: INIT timp scurs: 228 milisecunde
2021-10-26T18:44:13Z [Informații] INVOCARE: 581aa19c-05c3-4e3a-a47b-13c6523c141c
2021-10-26T18:44:13Z [Informații] METODA & URL:...
2021-10-26T18:44:13Z [Informații] UTILIZATOR ȘI COMPANIE: ...
2021-10-26T18:44:13Z [Informații] CERERE COMPANIE: ...
2021-10-26T18:44:13Z [Informații] COLECTARE & ARTICOL: ...
2021-10-26T18:44:13Z [Informații] ACȚIUNE:...
2021-10-26T18:44:13Z [Informații] Numărul total de solicitări efectuate de AzureResourceClient: 2, x-ms-request-charge acumulat: 4,16 (în medie 2,08 per solicitare)
2021-10-26T18:44:13Z [Informații] Timer: MAIN timp scurs: 229 milisecunde
2021-10-26T18:44:13Z [Informații] S-a executat „Functions.main” (Reușit, Id=581aa19c-05c3-4e3a-a47b-13c6523c141c, Duration=246ms)
Și iată un exemplu de ieșire trunchiată:
2021-10-26T18:44:13Z [Verbose] Trimitere ID invocare: fd430857-1f0c-47c9-9ec8-47dcb17c767c
2021-10-26T18:44:13Z [Verbose] Postare ID de invocare:fd430857-1f0c-47c9-9ec8-47dcb17c767c pe workerId:834c70c0-d3bd-4dab-869b77c28fcb77c2
2021-10-26T18:44:13Z [Informații] **************************************** **************************
2021-10-26T18:44:13Z [Informații] AzureResourceClient inițializat în: 0 milisecunde
2021-10-26T18:44:13Z [Informații] Timer: INIT timp scurs: 290 milisecunde
2021-10-26T18:44:13Z [Informații] INVOCARE: 64be8d30-a3ff-41d0-a653-de20c48db85a
... asta e. Pur și simplu se oprește. Cu toate acestea, apelul API se termină corect - nu avem niciun motiv să credem că există o eroare sau o excepție.
Credem că problema este posibil legată de faptul că stdout-ul nu este spălat, ci apelează logging.StreamHandler(stream=sys.stdout).flush()
înainte de a returna răspunsul HTTP nu are efect.
Cum ne putem asigura că toate din rezultatul așteptat ajunge la Application Insights?
BONUS: ieșirea este adesea întârziată cu zeci de secunde (în unele cazuri câteva minute). Cum ne putem asigura că rezultatul de înregistrare este disponibil instantaneu și în ordinea execuției?