1
urllib/urllib2でダウンロード速度制限を実装したいと思います。基本的な考え方は、過去x秒間にどれだけダウンロードされたかを調べ、それが限界を超えている場合、スクリプトは単にしばらくの間スリープ状態になります。Python - urllibとurllib2 - 読んでいないとどうなりますか?
ここで、開いている接続(urlopen()
)がありますが、しばらくの間read()
関数を呼び出さないとどうなりますか?
- urllibは内蔵バッファバッファがいっぱい、あなたが
read()
を呼び出すたびになるまで、バッファがnバイトで減少し、ダウンロードが続行されているダウンロード(及び明らかにそれが一杯になった場合、urllibはの待機を)持っています? - urllibバッファがある場合、そのサイズはどれくらい大きく、1つは手動でサイズを設定できますか?
- バッファがない場合、urllibは単にダウンロードし続けますか?
- urllibとurllib2の違いはありますか?
read()
機能は同じですか?
ありがとうございます、私はあなたが送信したリクエストとリンクを見ました。しかし要求があっても、request.iter_content(1024)がしばらく呼び出されていない場合や、要求がダウンロードや一時停止を続ける場合に何が起こるかは疑問です。 – goocreations
'要求'ストリーミングを使用すると、次のチャンクを求めるまでダウンロードが一時停止すると思います。私がそう思った理由は、一度このトリックを使って大規模なダウンロードが使用していたメモリの量を制限したからです。 'requests.get'の呼び出しで' stream = True'を設定すると、すべてのデータが消費されるか、自分で閉じられるまで、接続はプールに返されません。この[guide](http://docs.python-requests.org/ja/latest/user/advanced/#body-content-workflow)が役立つかどうかを確認してください。そして、 'チャンクがNoneではないなら、#do stuff' - ' None'であるチャンクはちょうどキープアライブであることを忘れないでください。 – rtkaleta
更新いただきありがとうございます。ネットワーク分析を行い、スクリプトがどれだけのデータを消費しているかを確認し、リクエストが実際に一時停止するようにします。 – goocreations