FastAPI-Optimierung für die Rückgabe großer JSON-Daten
Die Rückgabe großer JSON-Datensätze über FastAPI kann eine zeitaufwändige Aufgabe sein. Um diesen Engpass zu beheben, untersuchen wir alternative Ansätze, die die Leistung verbessern.
Identifizierung des Engpasses:
Der anfängliche Ansatz des Parsens der Parquet-Datei in JSON mithilfe von json.dumps( ) und json.loads() ist ineffizient. Der Standard-JSON-Encoder von FastAPI führt zu einem erheblichen Overhead.
Alternative Encoder:
Eine Lösung besteht darin, schnellere JSON-Encoder wie orjson oder ujson zu verwenden. Diese Alternativen bieten eine erhebliche Verbesserung gegenüber dem Standard-Encoder von FastAPI.
Anpassen der Antwortkodierungen:
Durch Umgehen des Standard-Encoders von FastAPI und direkte Konvertierung der Daten in JSON innerhalb der Antwort können wir kann den Codierungsprozess optimieren. Dies erfordert die Erstellung einer benutzerdefinierten APIRoute-Klasse, die den Route-Handler überschreibt und die Antwortzeit misst.
Nutzung des Pandas JSON-Encoders:
Verwendung der to_json()-Methode von Pandas direkt darin FastAPI bietet hervorragende Leistung. Diese Methode konvertiert den DataFrame in einen JSON-String, wodurch unnötige Konvertierungen vermieden und die Effizienz gesteigert werden.
Streaming von Daten bei Speicherproblemen:
In Fällen, in denen Speicherbeschränkungen aufgrund übermäßiger Speicherkapazität auftreten Wenn Sie Daten benötigen, sollten Sie Streaming-Techniken in Betracht ziehen. Durch die inkrementelle Rückgabe der Daten können Speicherprobleme wirksam gemindert werden.
Alternative Lösung: Dask
Für außergewöhnlich große Datensätze sollten Sie die Verwendung von Dask in Betracht ziehen, einer speziellen Bibliothek, die für die Verarbeitung solcher Mengen entwickelt wurde. Die read_parquet()-Methode von Dask ermöglicht eine nahtlose Integration mit Parquet-Dateien.
Zusätzliche Überlegungen:
Wenn die Anzeige der Daten im Browser zu Verzögerungen führt, setzen Sie den Content-Disposition-Header mit dem Anhangsparameter fordert den Browser auf, die Daten herunterzuladen, anstatt sie zu rendern. Darüber hinaus verhindert die Sicherstellung, dass der Pfadparameter angegeben wird, wenn die Methoden to_json() oder to_csv() in Pandas verwendet werden, potenzielle Speicherprobleme, indem die Speicherung des großen Datensatzes im Arbeitsspeicher vermieden wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3