[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