TypeError: Будущее или сопрограмма требуется с AWS лямбда - PullRequest
1 голос
/ 20 мая 2019

Я устанавливаю лямбда-функцию, которая делает асинхронные запросы, используя 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 и т. Д.

...