我正在使用此线程中的代码来限制下载速度。
如何合并使用限速代码恢复的部分下载?我发现的示例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()
问题内容: API通常具有用户必须遵循的速率限制。举个例子,让我们50个请求/秒。连续的请求采取0.5-1秒,因此是来接近极限速度太慢。但是,使用aiohttp的并行请求超出了速率限制。 轮询API尽可能快地允许,需要限速并行调用。 例如,我发现到目前为止装饰,大约像这样: 这非常适用于连续通话。试图并行调用来实现这个按预期不起作用。 下面是一些代码示例: 这里的问题是,它会率限制 排队 的任务。
我需要限制每分钟的请求数。我还没有找到任何方法来使用Spring云网关redis。下面是当前的实现:图像实现 customRouter.getBurstCapacitycustomRouter.getReplenishRate 两者都仅在几秒钟内运行。示例:20 个请求在同一秒内与。 我在1分钟内需要20个请求。
问题内容: 我的程序在使用序列化数据(a )到磁盘时被杀死。我现在无法打开部分写入的文件。 是否可以部分或全部恢复数据?如果是这样,怎么办? 这是我尝试过的: 该文件不为空: 注意:字典中的所有数据均由python内置类型组成。 问题答案: 纯Python版本的,即使遇到错误也会保持堆栈,因此您至少可以从中获得一些收益: 我得到以下输出: 泡菜数据格式并不复杂。通读Python模块的源代码,您可能
速率限制配置参考 filter.http.RateLimit filter.http.RateLimit proto { "domain": "...", "stage": "...", "request_type": "...", "timeout": "{...}" } domain (string, REQUIRED) 需要调用速率限制服务时的域。 stage (uint3
速率限制配置参考。 filter.network.RateLimit filter.network.RateLimit proto { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout": "{...}" } stat_prefix (string, REQUIRED) 发布统计信息时使用的前缀。
速率限制配置概述。 { "name": "rate_limit", "config": { "domain": "...", "stage": "...", "request_type": "...", "timeout_ms": "..." } } domain (required, string) 调用速率限制服务时使用的域。 stage (opt