On Mon, 20 Sept 2021 at 13:15, Chris Angelico <ros...@gmail.com> wrote:

> On Mon, Sep 20, 2021 at 9:48 PM Gustavo Carneiro <gjcarne...@gmail.com>
> wrote:
> >
> > Note that you can wrap any of those methods with an asyncio.wait_for().
> >
> > try:
> >    try:
> >        await asyncio.wait_for(lock.acquire(), 1.0)
> >    except asyncio.TimeoutError:  # times out after 1 second
> >        print("deadlock!")
> >        return
> >    do_things_with_lock()
> > finally:
> >    lock.release()
> >
> >
> > Although I must admit, it would be convenient to have a timeout
> parameter directly in the methods like acquire, especially because it would
> make timeouts usable directly in the async context manager:
> >
> > async with lock.acquire(timeout=1.0):
> >    do_things_with_lock()
> >
>
> How would this signal a timeout to your code? It looks lovely and
> clean, but there still need to be two branches, so you're not really
> going to avoid the try/except layer.
>

Right.  If you needed to handle the timeout, you would need a try except.
Else the TimeoutError exception that gets raised is unhandled and bubbles
up.

try:
    async with lock.acquire(timeout=1.0):
        do_things_with_lock()
except asyncio.TimeoutError:
    print("deadlock!")
    return

I mean, this is just slightly more convenient, probably slightly less scary
for some people, but that's all.

ChrisA
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/CBBP7KHS27AF63EW72VXEYZVFLRBSY4R/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
Gustavo J. A. M. Carneiro
Gambit Research
"The universe is always one step beyond logic." -- Frank Herbert
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/EIOECL4WGOA37SEXLBXYECZRQFIT7NQ7/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to