SyntaxError:异步函数内部的“yield”
async def handle(request):
for m in (yield from request.post()):
print(m)
return web.Response()
使用python3.5之前,找到pep525,安装python3.6.5,仍然收到这个错误。
发布于 2018-07-30 03:56:36
您正在使用新的async
/await
语法来定义和执行协同例程,但尚未进行完全切换。您需要在此处使用await
:
async def handle(request):
post_data = await request.post()
for m in post_data:
print(m)
return web.Response()
如果您想坚持使用Python3.5之前的旧语法,则使用@asyncio.coroutine
decorator将函数标记为协程,删除async
关键字,并使用yield from
而不是await
@async.coroutine
def handle(request):
post_data = yield from request.post()
for m in post_data:
print(m)
return web.Response()
但这种语法正在被逐步淘汰,而且远不如新语法那么容易发现和可读性。只有在需要编写与旧版本的Python兼容的代码时,才应该使用此表单。
https://stackoverflow.com/questions/51583968
复制相似问题