Я устанавливаю лямбда-функцию, которая делает асинхронные запросы, используя asyncio и aiohttp. Даже при том, что код работает нормально при локальном запуске, как только я загружаю его в lambda, он возвращает:
"errorMessage": "A Future or coroutine is required"
Я смотрел на уже открытые проблемы, такие как Boto3: требуется будущее или сопрограмма и TypeError: требуется будущее или сопрограмма , но не смог заставить его работать .
Я не уверен, почему возвращает сообщение об ошибке, пока у меня есть определенная сопрограмма
base_url = "https://www.reed.co.uk/api/1.0/jobs/"
url_list = [
"38012438",
"38012437",
"38012436"]
def lambda_handler(event, context):
client = boto3.client('s3',
aws_access_key_id="aws_access_key_id",
aws_secret_access_key="aws_secret_access_key")
async def fetch(session, url):
auth = aiohttp.BasicAuth(login='login', password='')
async with aiohttp.ClientSession(auth=auth) as session:
async with session.get(url) as response:
return await response.json()
async def fetch_all(urls, loop):
async with aiohttp.ClientSession(loop=loop) as session:
results = await asyncio.gather(*[fetch(session, base_url + url) for url in url_list], return_exceptions=True)
return results
loop = asyncio.get_event_loop()
htmls = loop.run_until_complete(fetch_all(urls, loop))
#I believe this is where the coroutine is
with open("/tmp/JOBS.json", "w") as f:
json.dump(htmls, f)
Я просто хочу, чтобы объединенное содержимое моих запросов было загружено в файл json.
Я прошу прощения за мои ограниченные навыки кодирования, поскольку я новичок в Python, Lambda и т. Д.