如何修复 TypeError:object str 不能在“await”表达式中使用?

5 python async-await aiohttp

运行以下代码:

async def generate_url(self, ding_id):
    data = await self.s3.generate_presigned_url(
        ClientMethod='get_object',
        Params={
        'Bucket': '...',
        'Key': '{}.mp4'.format(ding_id)
        }
    )

    return data

def convert_to_json(self, data):
    loop = asyncio.get_event_loop()
    for ding in dings:
        tasks.append(self.generate_url(ding))

    video_ids = loop.run_until_complete(asyncio.gather(*tasks))
    loop.close()
Run Code Online (Sandbox Code Playgroud)

导致错误:

'Key': '{}.mp4'.format(ding_id) 
TypeError: object str can't be used in 'await' expression`
Run Code Online (Sandbox Code Playgroud)

我使用异步请求库aiohttp。如何解决这个问题?

Ily*_*sky 6

generate_presigned_url方法是同步的,只返回 URL,这里不需要使用 wait 。