首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AssertionError:未来的收益没有被使用

AssertionError:未来的收益没有被使用
EN

Stack Overflow用户
提问于 2016-08-29 09:35:31
回答 1查看 3K关注 0票数 3

此代码:

代码语言:javascript
运行
复制
import asyncio
async def wee():
    address = 'localhost'
    port = 5432
    reader, writer = asyncio.open_connection(address, port)
    message = '/t'
    print('Send: %r' % message)
    writer.write(message.encode())

async def main():
    t2 = asyncio.ensure_future(wee())
    await t2

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

...produces a error AssertionError:...produces不与将来一起使用,用于此跟踪:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "ssh_as.py", line 20, in <module>
    loop.run_until_complete(main())
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 337, in run_until_complete
    return future.result()
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/tasks.py", line 241, in _step
    result = coro.throw(exc)
  File "ssh_as.py", line 16, in main
    await t2
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 358, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/tasks.py", line 290, in _wakeup
    future.result()
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "ssh_as.py", line 9, in wee
    reader, writer = asyncio.open_connection(address, port)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/streams.py", line 64, in open_connection
    lambda: protocol, host, port, **kwds)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 599, in create_connection
    yield from tasks.wait(fs, loop=self)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/tasks.py", line 341, in wait
    return (yield from _wait(fs, timeout, return_when, loop))
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/tasks.py", line 424, in _wait
    yield from waiter
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 359, in __iter__
    assert self.done(), "yield from wasn't used with future"
AssertionError: yield from wasn't used with future

如果我只使用一个变量,而不是将asyncio.open_connection解压缩给读者、作者和dummy=asyncio.open_connection(...,那么就没有这样的错误,尽管dummy对象也不能作为文档的StreamReader - TypeError: 'generator' object is not subscriptable使用。完全不知道会发生什么,请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-29 09:45:45

您需要将asyncio.open_connection(address, port)行更改为await asyncio.open_connection(address, port)。Open连接返回未来/承诺等,您需要“等待”该结果,以便能够访问其内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39202962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档