ensure_future 在模块 asyncio 中不可用

ensure_future not available in module asyncio

我正在尝试 运行 这个例子来自 python asyncio tasks & coroutines documentation

import asyncio

@asyncio.coroutine
def slow_operation(future):
    yield from asyncio.sleep(1)
    future.set_result('Future is done!')

def got_result(future):
    print(future.result())
    loop.stop()

loop = asyncio.get_event_loop()
future = asyncio.Future()
asyncio.ensure_future(slow_operation(future))
future.add_done_callback(got_result)
try:
    loop.run_forever()
finally:
    loop.close()

但是,我得到这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'ensure_future'

这句话似乎让我感到悲伤:

asyncio.ensure_future(slow_operation(future))

我的 python 解释器在 OSX Yosemite 上是 3.4.3,我链接到上面的文档版本也是如此,我从中复制了示例,所以我 不应该 得到这个错误。这是我的 python 解释器的终端截图:

Python 3.4.3 (default, Feb 25 2015, 21:28:45) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

页面中未引用 asyncio.ensure_future 的其他示例似乎有效。

我尝试打开一个新的解释器会话并从 asyncio

导入 ensure_future
from asyncio import ensure_future

我收到一个导入错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'ensure_future'

我可以访问另一台机器 运行ning Ubuntu 14.04 安装了 python 3.4.0。我在那里尝试了相同的导入,不幸的是遇到了相同的导入错误。

是否更改了 asyncio 的 api,它只是没有反映在文档示例中,或者可能有错字,ensure_function 真的应该是文档中的其他内容?

该示例对 SO 社区的其他成员有效(或无效)吗?

谢谢。

https://docs.python.org/3.4/library/asyncio-task.html#asyncio.ensure_future

asyncio.ensure_future(coro_or_future, *, loop=None)

Schedule the execution of a coroutine object: wrap it in a future. Return a Task object.

If the argument is a Future, it is returned directly.

New in version 3.4.4.

关于“Who is to blame?". And regarding "What is to be done?”的内容:

asyncio.async(coro_or_future, *, loop=None)

A deprecated alias to ensure_future().

Deprecated since version 3.4.4.