APIから大量のデータを収集し、CSVにフォーマットし、圧縮して結果をストリーミングする必要があるpythonメソッドがあります。
私はグーグルをしてきましたが、見つけることができるすべての解決策は、一時ファイルに書き込むか、アーカイブ全体をメモリに保持する必要があります。
私はOOMをかなり急速に取得するので、メモリは間違いなくオプションではありません。一時ファイルへの書き込みには、それに関連する多くの問題があります (このボックスは、現時点ではログ用にディスクのみを使用する、ダウンロード開始までのリード タイムがはるかに長い、ファイルのクリーンアップの問題など)。それがただ厄介であるという事実は言うまでもありません。
次のようなことができるライブラリを探しています...
C = Compressor(outputstream)
C.BeginFile('Data.csv')
for D in Api.StreamResults():
C.Write(D)
C.CloseFile()
C.Close()
つまり、データを書き込むときに出力ストリームを書き込むものです。
私は .Net と PHP でこれを行うことができましたが、Python でアプローチする方法がわかりません。
大まかに言えば、「大量の」データとは、最大 10 Gb の (生の平文) データを処理できる必要があることを意味します。これは、ビッグ データ システムのエクスポート/ダンプ プロセスの一部です。