обеспечить будущее недоступно в модуле asyncio

Я пытаюсь запустить этот пример от python asyncio задачи & coroutines документация

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 - 3.4.3 на OSX Yosemite, как и версия документации, с которой я связан выше, из которой я скопировал пример, поэтому я не стоит получите эту errror. Вот терминал-захват моего интерпретатора 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 кажется, работает.

Я попытался открыть новый сеанс интерпретатора и импортировать ensure_future С asyncio

from asyncio import ensure_future

Я получаю ошибку импорта:

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

у меня есть доступ к другой машине под управлением Ubuntu 14.04 с установленным python 3.4.0. Я попробовал тот же импорт там, и, к сожалению, столкнулся с той же ошибкой импорта.

имеет api для asyncio был изменен, и его просто не отражено в примерах документации, или, может быть, есть опечатка и ensure_function действительно должно быть что-то еще в документации?

работает ли пример (или прерывается) для других членов сообщества SO?

спасибо.

1 ответов


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

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

запланируйте выполнение объекта coroutine: оберните его в будущем. Возвращает объект задачи.

если аргумент Future, он возвращается напрямую.

новое в версии 3.4.4.

вот и все для "кто виноват?". И о "что делать?":

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

устаревший псевдоним ensure_future().

устаревшим, начиная с версии 3.4.4.