如何解决aiohttp和IDM之间的下载和流文件问题?

时间:2019-10-30 16:39:18

标签: python-3.x streaming aiohttp download-manager

我想通过aiohttp框架(在python 3.7中)流式传输媒体文件,并在IDM中同时下载具有恢复功能的媒体文件。 给出了文件路径,并且还设置了标头。 我已使用partial contentContent-Range来激活IDM

中的恢复功能

文件流式传输良好,但是下载时IDM出现问题 问题出在用IDM下载时,我按下了Pause按钮 我想重新启动并继续下载 但它开始从0%下载。 这使我无法使用resume capability中存在的完美无缺的IDM。 我想使用IDM下载文件,这种情况是当我按下“暂停”按钮时它会暂停下载,而当我再次按下“开始”按钮时,它会从暂停的位置继续下载。

我已使用以下代码下载和流式传输由aiohttp框架编写的文件

@routes.get('/')
async def handle(request):
    offset = 0
    if 'Range' in dict(request.headers):
        offset =int(hh['Range'][6:].split('-')[0])
    with open(filepath, 'rb') as f:
        resp = Response(status=206,
                              headers={'Content-Type': mimetypes.guess_type(filename)[0],
                                       'CONTENT-LENGTH': str(file_size),
                                       'Accept-Ranges': 'bytes',
                                       'CONNECTION': 'keep-alive',
                                       'Content-Range': 'bytes %d - %d/%d' % (offset, file_size, size)
                                       },
                              )

        data = f.read()
        await resp.prepare(request)
        await resp.write(data)
        return resp

app = web.Application()
app.add_routes(routes)
web.run_app(app,host='0.0.0.0')

0 个答案:

没有答案