[Python-Dev] async/await in Python; v2 (original) (raw)
Yury Selivanov yselivanov.ml at gmail.com
Thu Apr 23 03:10:52 CEST 2015
- Previous message (by thread): [Python-Dev] async/await in Python; v2
- Next message (by thread): [Python-Dev] async/await in Python; v2
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2015-04-22 9:04 PM, Guido van Rossum wrote:
On Wed, Apr 22, 2015 at 5:55 PM, Yury Selivanov <yselivanov.ml at gmail.com> wrote:
On 2015-04-22 8:35 PM, Guido van Rossum wrote:
On Wed, Apr 22, 2015 at 5:12 PM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
Guido van Rossum wrote: On Wed, Apr 22, > OTOH I'm still struggling with what you have to do to wrap a coroutine in a Task, the way its done in asyncio by the Task() constructor, the loop.createtask() method, and the async() function
That's easy. You can always use costart() to adapt a cofunction for use with something expecting a generator-based coroutine, e.g. codef mytaskfunc(arg): ... mytask = Task(costart(mytaskfunc, arg)) If you're willing to make changes, Task() et al could be made to recognise cofunctions and apply costart() where needed. Hm, that feels backwards incompatible (since currently I can write Task(mytaskfunc(arg)) and also a step backwards in elegance (having to pass the args separately). OTOH the benefit is that it's much harder to accidentally forget to wait for a coroutine. And maybe the backward compatibility issue is not really a problem because you have to opt in by using codef or async def. So I'm still torn. :-) Somebody would need to take a mature asyncio app and see how often this is used (i.e. how many place would require adding costart() as in the above example). Somewhere in this thread Victor Stinner wrote: """A huge part of the asyncio module is based on "yield from fut" where fut is a Future object.""" So how would we do "await fut" if await requires parentheses? We could make Future a valid co-callable object.
So you would have to write 'await fut()'? This is non-intuitive. To make Greg's proposal work it'd be a requirement for 'await' (enforced by the grammar!) to have '()' after it.
Yury
- Previous message (by thread): [Python-Dev] async/await in Python; v2
- Next message (by thread): [Python-Dev] async/await in Python; v2
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]