当调用的函数具有 async 关键字时,await 会引发 SyntaxError:Python

与爱玛

async在一个单独的脚本中有一个带有关键字的函数,它是这样的:

async def search_gifs(self, query:str, limit:int = 25, offset:int = 0, rating: rating = rating.G, lang:language = None):
    if language == None:
        lang_to_use = self.lang
    result = await requests.get(self.end_point + "gifs/search", api_key = self.key, q = query, limit=limit, offset=offset, rating=rating.value, lang=lang_to_use.value)
    print(result.json())

但是,当我尝试使用 调用它时await,它会引发SintaxError.

await client.search_gifs("lol")

>>> await client.search_gifs("lol")
               ^
    SyntaxError: invalid syntax

search_gifsClient类中的一个函数

难道我做错了什么?我正在使用 Python 3.6

用户4815162342

await仅在 内有效async def,因此它在顶层不起作用。这是因为 的约定await是它必须能够挂起当前的协程,而在顶层没有协程可以挂起。

要从解释器测试协程asyncio.run,请在 Python 3.6 中使用run_until_complete

>>> asyncio.get_event_loop().run_until_complete(client.search_gifs("lol"))

您的代码的另一个问题是它await requests.get(...)不起作用,因为requests它不是异步库。相反,请使用异步感知库,例如aiohttp.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当不使用async / await关键字时,为什么异步单元测试会失败?

为什么必须将async关键字添加到具有await关键字的函数中?

为什么Dart中没有await关键字的async关键字功能?

没有await关键字的调用async方法到底会发生什么?

如何使用async和await关键字进行异步调用

async / await链中的所有功能都必须使用async / await关键字吗?

所有C ++编译器都支持async / await关键字吗?

在没有async关键字的情况下在全局范围内使用await

将变量用作具有预定义关键字的函数的关键字(Python)

Python“ in”关键字引发KeyError

如何在“ react-dropzone”的“ onDrop”中使用Async Await?(解析错误:无法在Async函数外部使用关键字“ await”)

再次调用async_read会引发异常

为什么有时在带有async后缀的方法中不使用async关键字?

返回带有async关键字的视图

WCF-使用await键调用函数会引发异常

在Dapper中使用Async Await关键字

Future,async,await 关键字是什么意思?

Python 3.4.3 asyncio关键字SyntaxError

最小/最大Python的关键字函数

异步方法会立即引发异常,但在删除async关键字时会被吞下

未捕获的 SyntaxError:await 仅在 async 函数中的 async 函数中有效

具有关键字参数的Python函数接受位置参数

具有关键字参数的Python动态函数避免使用未使用的参数

用户在Python中键入关键字时结束函数

在python中不使用`global`关键字引用函数内部时出错

在等待的函数中为回调使用 async 关键字有什么目的?

Python函数关键字有什么作用?

在返回承诺对象时使用 `Async` 关键字

SyntaxError:await 仅在 async 函数中有效,但 async 已包含在内