[Python-Dev] async/await behavior on multiple calls

Guido van Rossum guido at python.org
Tue Dec 15 15:41:36 EST 2015


Agreed. (But let's hear from the OP first.)

On Tue, Dec 15, 2015 at 12:27 PM, Andrew Svetlov <andrew.svetlov at gmail.com>
wrote:

> Both Yury's suggestions sounds reasonable.
>
> On Tue, Dec 15, 2015 at 10:24 PM, Yury Selivanov
> <yselivanov.ml at gmail.com> wrote:
> > Hi Roy and Guido,
> >
> > On 2015-12-15 3:08 PM, Guido van Rossum wrote:
> > [..]
> >>
> >>
> >> I don't know how long you have been using async/await, but I wonder if
> >> it's possible that you just haven't gotten used to the typical usage
> >> patterns? In particular, your claim "anything that takes an `awaitable`
> has
> >> to know that it wasn't already awaited" makes me sound that you're just
> >> using it in an atypical way (perhaps because your model is based on
> other
> >> languages). In typical asyncio code, one does not usually take an
> awaitable,
> >> wait for it, and then return it -- one either awaits it and then
> extracts
> >> the result, or one returns it without awaiting it.
> >
> >
> > I agree.  Holding a return value just so that coroutine can return it
> again
> > seems wrong to me.
> >
> > However, since coroutines are now a separate type (although they share a
> lot
> > of code with generators internally), maybe we can change them to throw an
> > error when they are awaited on more than one time?
> >
> > That should be better than letting them return `None`:
> >
> >     coro = coroutine()
> >     await coro
> >     await coro  # <- will raise RuntimeError
> >
> >
> > I'd also add a check that the coroutine isn't being awaited by more than
> one
> > coroutine simultaneously (another, completely different issue, more on
> which
> > here: https://github.com/python/asyncio/issues/288).  This was fixed in
> > asyncio in debug mode, but ideally, we should fix this in the interpreter
> > core.
> >
> > Yury
> > _______________________________________________
> > Python-Dev mailing list
> > Python-Dev at python.org
> > https://mail.python.org/mailman/listinfo/python-dev
> > Unsubscribe:
> >
> https://mail.python.org/mailman/options/python-dev/andrew.svetlov%40gmail.com
>
>
>
> --
> Thanks,
> Andrew Svetlov
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/guido%40python.org
>



-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20151215/3e83b111/attachment.html>


More information about the Python-Dev mailing list