gpt4 book ai didi

Python URLRetrieve 限制速率并恢复部分下载

转载 作者:行者123 更新时间:2023-11-28 23:06:46 27 4
gpt4 key购买 nike

我正在使用 this thread 中的代码来限制我的下载速率。

如何将部分下载恢复与速率限制代码结合起来?我发现的示例使用 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)

最佳答案

也许可以改用 PyCurl:

def curl_progress(total, existing, upload_t, upload_d):
try:
frac = float(existing)/float(total)
except:
frac = 0
print "Downloaded %d/%d (%0.2f%%)" % (existing, total, frac)

def curl_limit_rate(url, filename, rate_limit):
"""Rate limit in bytes"""
import pycurl
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.MAX_RECV_SPEED_LARGE, rate_limit)
if os.path.exists(filename):
file_id = open(filename, "ab")
c.setopt(c.RESUME_FROM, os.path.getsize(filename))
else:
file_id = open(filename, "wb")

c.setopt(c.WRITEDATA, file_id)
c.setopt(c.NOPROGRESS, 0)
c.setopt(c.PROGRESSFUNCTION, curl_progress)
c.perform()

关于Python URLRetrieve 限制速率并恢复部分下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com