大きな CSV 遠隔ファイルをダウンロードし、すべての行を受信時に MySQL にプッシュしたいと考えていcsv.reader
ます。遠隔ファイルを解析するために使用します。1000 のバッチで MySQL に行を追加します。
問題は、ピアとの接続が 5 分後にタイムアウトになり、ファイルを 1 分以内にダウンロードできても、MySQL へのプッシュにはそれ以上の時間がかかることです。
ピアとの接続が mySQL の制約を待たないように、ダウンロード ジョブとプッシュ ジョブを非同期で動作させる方法はありますか?
避けたい
- 不要な場合はメモリ内のファイル全体をダウンロードする
- 最初の行がダウンロードされるとすぐに mysql にプッシュし始めます
- 一時ファイルをいじる必要がある
基本的に、私は自分の python スクリプトにcurl file | my_script_that_pushes_values.sh
.
これが私がしていることの実例です:
csvReader = csv.reader(distantfile)
valuesBuffer = []
for row in csvReader:
valuesBuffer.append(getValues(row))
if len(valuesBuffer) % 1000 = 0:
pushValuesIntoMySQL(valuesBuffer)
valuesBuffer = []
pushValuesIntoMySQL(valuesBuffer)