このスレッドのコードを使用して、ダウンロード速度を制限しています。
レート制限コードで再開する部分的なダウンロードを組み込むにはどうすればよいですか?私が見つけた例では、のurlopen
代わりに使用urlretrieve
し、RateLimit
クラスはに依存していurlretrieve
ます。
RateLimit
クラスを変更せずに、部分的なダウンロードを制御する外部関数が必要です。
from throttle import TokenBucket, RateLimit
def retrieve_limit_rate(url, filename, rate_limit):
"""Fetch the contents of urls"""
bucket = TokenBucket(10*rate_limit, rate_limit)
print "rate limit = %.1f kB/s" % (rate_limit,)
print 'Downloading %s...' % filename
rate_limiter = RateLimit(bucket, filename)
#
# What do I put here to allow resuming files?
#
return urllib.urlretrieve(url, filename, rate_limiter)