New submission from Henrique Fingler <[email protected]>:
In the documentation of asyncio.run_coroutine_threadsafe(coro, loop), in
Section 19.5.3.6
(https://docs.python.org/3/library/asyncio-task.html#asyncio.run_coroutine_threadsafe),
the example code does the following:
future = asyncio.run_coroutine_threadsafe(coro, loop)
# Wait for the result with an optional timeout argument
assert future.result(timeout) == 3
The problem is that the result method of a future, according to the
documentation doesn't take parameters. It's in Section 19.5.3.4
(https://docs.python.org/3.8/library/asyncio-task.html#asyncio.Future.done)
result()
Return the result this future represents.
The same function is used in Section 18.5.9.3
(https://docs.python.org/3/library/asyncio-dev.html#concurrency-and-multithreading)
This error is present in all Python 3.* docs.
From the asyncio source code
(https://github.com/python/cpython/blob/master/Lib/asyncio/futures.py), we have
this in the Future class definition:
class Future:
"""This class is *almost* compatible with concurrent.futures.Future.
Differences:
- This class is not thread-safe.
- result() and exception() do not take a timeout argument and
raise an exception when the future isn't done yet.
....
So this example needs to be reworked, I'd do it if I knew more about asyncio.
My ideas involve either using a add_done_callback with a flag or just busy
waiting until future.done().
----------
assignee: docs@python
components: Documentation
messages: 314223
nosy: Henrique Fingler, docs@python
priority: normal
severity: normal
status: open
title: asyncio example uses non-existing/documented method
versions: Python 3.5, Python 3.6, Python 3.7, Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue33117>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com