


Roh-HTTP-Anfrage/-Antwort in Python FastAPI für bestimmte Routen protokollieren
Problem:
Wir entwickeln ein Webdienst mit FastAPI, der in Kubernetes bereitgestellt wird. Zu Prüfzwecken müssen wir den JSON-Rohtext der Anfragen und Antworten bestimmter Routen protokollieren. Die JSON-Körper der Anfrage und Antwort sind ungefähr 1 MB groß und es ist wichtig, dass der Protokollierungsprozess die Antwortzeiten nicht wesentlich beeinflusst.
Lösung:
Option 1: Middleware verwenden
-
Erstellen Sie eine Middleware:
Definieren Sie eine Funktion und verwenden Sie den Dekorator @app.middleware("http"), um eingehende Anfragen und ausgehende Antworten zu verarbeiten. -
Anforderungstext erfassen:
Verwenden Sie request.body() oder request.stream(), um den Anfragetext zu erfassen. -
Antwort verarbeiten Textkörper:
Lesen Sie den Antworttext als Byte-Objekt und geben Sie eine benutzerdefinierte Antwort an den Client zurück. -
Daten protokollieren:
Verwenden Sie eine Hintergrundaufgabe, um die Anfrage zu protokollieren und Antworttexte in eine Datei oder Datenbank.
Option 2: Benutzerdefinierte APIRoute verwenden Klasse
-
Benutzerdefinierte APIRoute definieren:
Erstellen Sie eine benutzerdefinierte APIRoute-Klasse, die die APIRoute-Basisklasse erweitert und die Änderung von Anforderungs- und Antworttexten ermöglicht. -
Anforderungstext verarbeiten:
Erfassen Sie im benutzerdefinierten Routenhandler den Anforderungstext, bevor er ihn erreicht der Endpunkt-Handler. -
Antworttext verarbeiten:
Ändern Sie den Antworttext und erstellen Sie ein neues Antwortobjekt. Wenn die ursprüngliche Antwort eine StreamingResponse ist, fügen Sie dem Streaming-Iterator Protokollierungsfunktionen hinzu. -
Hintergrundprotokollierung:
Hängen Sie die Protokollierungsfunktion als BackgroundTask an das Antwortobjekt an.
Hinweis:
Beachten Sie die Größe der Anfrage- und Antworttexte als groß Nutzlasten können zu Speicherproblemen oder Verzögerungen sowohl auf der Server- als auch auf der Clientseite führen. Es kann erforderlich sein, die Protokollierung auf bestimmte Routen zu beschränken oder Streaming-Antworten von der Protokollierung auszuschließen.
Das obige ist der detaillierte Inhalt vonWie kann ich Roh-HTTP-Anforderungs-/Antwort-JSON in FastAPI für die Prüfung effizient protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

ForHandlinglargedatasetsinpython, Usenumpyarraysforbetterperformance.1) Numpyarraysarememory-Effiction und FasterFornumericaloperations.2) meidenunnötiger Anbieter.3) HebelVectorisationFecedTimeComplexity.4) ManagemememoryusageSageWithEffizienceDeffictureWitheseffizienz

Inpython, listEUSUutsynamicMemoryAllocationWithover-Accocation, whilenumpyarraysalcodeFixedMemory.1) ListSallocatemoremoryThanneded intellig, vereitelte, dass die sterbliche Größe von Zeitpunkte, OfferingPredictableSageStoageStloseflexeflexibilität.

Inpython, youcansspecthedatatypeyFelemeremodelerernspant.1) Usenpynernrump.1) Usenpynerp.dloatp.Ploatm64, Formor -Präzise -Preciscontrolatatypen.

NumpyisessentialfornumericalComputingInpythonduetoitsSpeed, GedächtnisEffizienz und kompetentiertemaMatematical-Funktionen.1) ITSFACTBECAUSPERFORMATIONSOPERATIONS.2) NumpyarraysSaremoremory-Effecthonpythonlists.3) iTofferSAgyarraysAremoremory-Effizieren

ContInuuousMemoryAllocationScrucialforAraysBecauseAltoLowsFofficy und Fastelement Access.1) iTenablesconstantTimeAccess, O (1), Duetodirectaddresscalculation.2) itimProvesefficienceByallowing -MultipleTeLementFetchesperCacheline.3) Es wird gestellt

SlicingPapythonListisDoneUsingthesyntaxlist [Start: Stop: Stufe] .here'Showitworks: 1) StartIndexoFtheFirstelementtoinclude.2) stopiStheIndexoFtheFirstelementtoexclude.3) StepisTheincrementBetweenelesfulFulForForforexcractioningPorporionsporporionsPorporionsporporesporsporsporsporsporsporsporsporsporionsporsPorsPorsPorsPorsporsporsporsporsporsporsAntionsporsporesporesporesporsPorsPorsporsPorsPorsporsporspors,

Numpyallowsforvariousoperationssonarrays: 1) BasicarithmeticliKeaddition, Subtraktion, Multiplikation und Division; 2) AdvancedoperationssuchasmatrixMultiplication;

Arraysinpython, insbesondere ThroughNumpyandpandas, areessentialfordataanalyse, öfterspeedandeffizienz.1) numpyarraysenableAnalysHandlingoflargedatasets und CompompexoperationslikemovingAverages.2) Pandasextendsnumpy'ScapaBilitiesWithDaTataforsForstruc


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),
