Issue22112
Created on 2014-07-31 02:40 by pydanny, last changed 2014-08-10 23:11 by vstinner. This issue is now closed.
Files | ||||
---|---|---|---|---|
File name | Uploaded | Description | Edit | |
Screen Shot 2014-07-30 at 8.13.12 PM.png | pydanny, 2014-07-31 03:10 | |||
doc_create_task.patch | vstinner, 2014-08-02 11:19 | review |
Messages (10) | |||
---|---|---|---|
msg224374 - (view) | Author: Daniel Greenfeld (pydanny) | Date: 2014-07-31 02:40 | |
Problem ======== The documentation on asyncio provides an example of a parallel execution of tasks. The code is at: https://docs.python.org/3/library/asyncio-task.html#example-parallel-execution-of-tasks ``` python import asyncio @asyncio.coroutine def factorial(name, number): f = 1 for i in range(2, number+1): print("Task %s: Compute factorial(%s)..." % (name, i)) yield from asyncio.sleep(1) f *= i print("Task %s: factorial(%s) = %s" % (name, number, f)) loop = asyncio.get_event_loop() tasks = [ loop.create_task(factorial("A", 2)), loop.create_task(factorial("B", 3)), loop.create_task(factorial("C", 4))] loop.run_until_complete(asyncio.wait(tasks)) loop.close() ``` Unfortunately, when I try to run this sample code on Python 3.4.1, I run into an error. Specifically, the `loop.create_task()` method does not exist: ``` python Traceback (most recent call last): File "what_me_asynicio.py", line 14, in <module> loop.create_task(factorial("A", 2)), AttributeError: '_UnixSelectorEventLoop' object has no attribute 'create_task' ``` When I perform a dir() on the `loop` object, no `create_task` item is in the result. System Information ==================== Python Version: 3.4.1 Operating System: OSX 10.9.3 (Also confirmed on Python 3.4.0 in Ubuntu 14.04) |
|||
msg224376 - (view) | Author: Guido van Rossum (gvanrossum) * ![]() |
Date: 2014-07-31 02:47 | |
Thanks for reporting a doc bug! The code should use asyncio.async() instead of loop.create_task(). |
|||
msg224377 - (view) | Author: Daniel Greenfeld (pydanny) | Date: 2014-07-31 03:10 | |
This has been fixed in 3.4.2, but shows up in the 3.4.1 documentation. How do I fix the 3.4.1 documentation so this doesn't show up? |
|||
msg224378 - (view) | Author: Guido van Rossum (gvanrossum) * ![]() |
Date: 2014-07-31 03:48 | |
I honestly don't know; ask Benjamin. :-) Personally, I'd say that ship has sailed. |
|||
msg224388 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2014-07-31 09:04 | |
> This has been fixed in 3.4.2, but shows up in the 3.4.1 documentation. Well, I didn't want to change Python 3.4.1 documentation, but it looks like https://docs.python.org/3.4/ is updated after each commit into the 3.4 branch. For example, new asyncio functions added in 3.4.2 are already documented: https://docs.python.org/3.4/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_task I changeed all examples to use create_task() instaed of async() or the Task contructor: changeset: 91609:66f06fbf8a2f branch: 3.4 user: Victor Stinner <victor.stinner@gmail.com> date: Tue Jul 08 12:39:10 2014 +0200 files: Doc/library/asyncio-dev.rst Doc/library/asyncio-eventloop.rst Doc/library/asyncio-stream.r description: Update asyncio documentation - Document the new create_task() method - "Hide" the Task class: point to the create_task() method for interoperability - Rewrite the documentation of the Task class - Document the "Pending task destroyed" - Update output in debug mode of examples in the dev section - Replace Task() with create_task() in examples Maybe I should revert this change in the 3.4 branch, but mention that Python 3.4.2 and 3.5 have a new create_task() which is now the recommanded way to schedule a coroutine (to create a task object). |
|||
msg224427 - (view) | Author: Daniel Greenfeld (pydanny) | Date: 2014-07-31 16:51 | |
First, if there is documentation that says, "3.4.1", doesn't it make sense that the documentation should only be for 3.4.1? Which means that this create_task documentation should be reverted in the 3.4.1 documentation to match the 3.4.1 specification. Second and most respectfully, why is a feature being added in 3.4.2? I thought this kind of release (3.4.1 to 3.4.2) was for bug fixes and security issues, not new features. Unless create_task was in the original 3.4 specification, I argue that create_task belongs in 3.5. In it's place, a recipe of running tasks in parallel fashion per gvanrossum's suggestion of asyncio.async() could be added. |
|||
msg224429 - (view) | Author: Guido van Rossum (gvanrossum) * ![]() |
Date: 2014-07-31 17:11 | |
asyncio has an explicit exemption from the general rule that bugfixes should not add new features. This is because of the "provisional" status of the PEP. We'll stop doing this once 3.5 is out. I don't know what's up with the online docs. On Thu, Jul 31, 2014 at 9:51 AM, Daniel Greenfeld <report@bugs.python.org> wrote: > > Daniel Greenfeld added the comment: > > First, if there is documentation that says, "3.4.1", doesn't it make sense > that the documentation should only be for 3.4.1? Which means that this > create_task documentation should be reverted in the 3.4.1 documentation to > match the 3.4.1 specification. > > Second and most respectfully, why is a feature being added in 3.4.2? I > thought this kind of release (3.4.1 to 3.4.2) was for bug fixes and > security issues, not new features. Unless create_task was in the original > 3.4 specification, I argue that create_task belongs in 3.5. In it's place, > a recipe of running tasks in parallel fashion per gvanrossum's suggestion > of asyncio.async() could be added. > > ---------- > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue22112> > _______________________________________ > |
|||
msg224553 - (view) | Author: STINNER Victor (vstinner) * ![]() |
Date: 2014-08-02 11:19 | |
Here is a a patch which replaces loop.create_task(coro) with asyncio.async(coro), mention that asyncio.async() can be used to scheduler a coroutine, and make it clear that create_task() is only available in Python 3.4.2 and later. Does it look better? If it's possible, I would prefer to have exactly the same documentation in Python 3.4 and 3.5. |
|||
msg224580 - (view) | Author: Guido van Rossum (gvanrossum) * ![]() |
Date: 2014-08-02 18:48 | |
Looks good! On Sat, Aug 2, 2014 at 4:19 AM, STINNER Victor <report@bugs.python.org> wrote: > > STINNER Victor added the comment: > > Here is a a patch which replaces loop.create_task(coro) with > asyncio.async(coro), mention that asyncio.async() can be used to scheduler > a coroutine, and make it clear that create_task() is only available in > Python 3.4.2 and later. > > Does it look better? > > If it's possible, I would prefer to have exactly the same documentation in > Python 3.4 and 3.5. > > ---------- > keywords: +patch > Added file: http://bugs.python.org/file36203/doc_create_task.patch > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue22112> > _______________________________________ > |
|||
msg225170 - (view) | Author: Roundup Robot (python-dev) ![]() |
Date: 2014-08-10 23:11 | |
New changeset d0ea92701b1e by Victor Stinner in branch '3.4': Issue #22112, asyncio doc: replace loop.create_task(coro) with http://hg.python.org/cpython/rev/d0ea92701b1e New changeset 18a311479e8b by Victor Stinner in branch 'default': (Merge 3.4) Issue #22112, asyncio doc: replace loop.create_task(coro) with http://hg.python.org/cpython/rev/18a311479e8b |
History | |||
---|---|---|---|
Date | User | Action | Args |
2014-08-10 23:11:53 | vstinner | set | status: open -> closed resolution: fixed |
2014-08-10 23:11:38 | python-dev | set | nosy:
+ python-dev messages: + msg225170 |
2014-08-02 18:48:49 | gvanrossum | set | messages: + msg224580 |
2014-08-02 11:19:44 | vstinner | set | files:
+ doc_create_task.patch keywords: + patch messages: + msg224553 |
2014-07-31 17:11:15 | gvanrossum | set | messages: + msg224429 |
2014-07-31 16:51:32 | pydanny | set | messages: + msg224427 |
2014-07-31 09:04:33 | vstinner | set | messages: + msg224388 |
2014-07-31 03:48:18 | gvanrossum | set | messages: + msg224378 |
2014-07-31 03:10:56 | pydanny | set | files:
+ Screen Shot 2014-07-30 at 8.13.12 PM.png messages: + msg224377 |
2014-07-31 02:47:33 | gvanrossum | set | messages: + msg224376 |
2014-07-31 02:40:18 | pydanny | create |