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.
我正在尝试 运行 这个例子来自 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.