【发布时间】:2021-08-03 19:41:07
【问题描述】:
我正在尝试从 API 响应中异步保存一堆 gzip 文件。基本上,我得到一个具有不同 URI 的数组,我必须将它们附加到基本 URL 才能下载 .gz 文件。 .gz 文件中有一个格式为 JSON 的文本文件。我已经有代码以同步方式工作,但我想尝试异步以最小化运行时间。我在下面尝试了一种异步方式,这确实给了我 .gz 文件,但是当我尝试提取这些文件时,里面什么都没有。非常感谢任何帮助或想法!
这是同步代码:
from get_countryfile import uri_response, request_url
import requests
import os
import pathlib
access_token = get_access_token()
print(access_token)
for uri in uri_response:
request_url = request_url + uri['uri'] + '?access_token=' + access_token
request = requests.get(request_url)
with open('filename' + uri['description'] + '.json.gzip', 'wb') as myfile:
myfile.write(request._content)
这是我目前的异步代码:
from get_access_token import get_access_token
from get_countryfile import uri_response, request_url
import aiohttp
import aiofiles
import asyncio
import gzip
async def get_file():
async with aiohttp.ClientSession() as session:
for uri in uri_response:
file_url = request_url + uri['uri']+'?access_token='+ get_access_token()
async with session.get(file_url) as resp:
with open('filename' + uri['description'] + '.json.gzip', 'w') as myfile:
print(resp.read())
asyncio.run(get_file())
【问题讨论】:
标签: python asynchronous python-requests gzip python-asyncio