【发布时间】:2021-02-14 16:41:10
【问题描述】:
我正在使用请求在运行 Linux 的小型嵌入式设备上下载一个大 (~50MiB) 文件。
文件将写入附加的 MMC。
不幸的是,MMC 写入速度低于网络速度,我看到内存消耗增加,在某些情况下,我什至遇到内核“无法处理页面...”错误。
设备只有 128MiB RAM。
我使用的代码是:
with requests.get(URL, stream=True) as r:
if r.status_code != 200:
log.error(f'??? download returned {r.status_code}')
return -(offset + r.status_code)
siz = 0
with open(sfn, 'wb') as fo:
for chunk in r.iter_content(chunk_size=4096):
fo.write(chunk)
siz += len(chunk)
return siz
如何在写入 MMC 时暂时停止服务器?
【问题讨论】:
-
这能回答你的问题吗? Download large file in python with requests
-
@python_user:除非我遗漏了一些东西,否则那里的代码与我已经在使用的代码相同。我的问题是“写入磁盘”部分比“从网络获取”部分慢。显然,在这种情况下,请求(或以下内容)会不断分配内存来缓冲尚未处理的传入数据。我需要一种方法来减慢源速度(例如:延迟发送帧 ACK)
标签: python python-requests bandwidth-throttling