[Python-Dev] Should asyncio ignore KeyboardInterrupt?

Guido van Rossum guido at python.org
Sat Jul 4 21:58:43 CEST 2015


It's possible, but AFAIK asyncio.sleep() has nothing in common with
time.sleep() -- it's implemented as a timeout on select() or on the IOCP
loop. (I also have no access to Windows ATM.)

On Sat, Jul 4, 2015 at 7:49 PM, R. David Murray <rdmurray at bitdance.com>
wrote:

> Once long ago in Internet time (issue 581232) time.sleep on windows was
> not interruptible and this was fixed.  Is it possible the work on EINTR
> has broken that fix?
>
> (I don't currently have 3.5 installed on windows to test that theory...)
>
> On Sat, 04 Jul 2015 17:46:34 +0200, Guido van Rossum <guido at python.org>
> wrote:
> > I think this may be more of a Windows issue than an asyncio issue. I
> agree
> > that ideally ^C should take effect immediately (as it does on UNIX).
> >
> > On Sat, Jul 4, 2015 at 9:54 AM, Terry Reedy <tjreedy at udel.edu> wrote:
> >
> > > Should the loop.run... methods of asyncio respect KeyboardInterrupt
> (^C)?
> > >
> > > Developer and user convenience and this paragraph in PEP
> > >
> > > "However, exceptions deriving only from BaseException are typically not
> > > caught, and will usually cause the program to terminate with a
> traceback.
> > > In some cases they are caught and re-raised. (Examples of this category
> > > include KeyboardInterrupt and SystemExit ; it is usually unwise to
> treat
> > > these the same as most other exceptions.) "
> > >
> > > and this examples in the doc (two places)
> > >
> > > TCP echo server
> > >     # Serve requests until CTRL+c is pressed
> > >     print('Serving on {}'.format(server.sockets[0].getsockname()))
> > >     try:
> > >         loop.run_forever()
> > >     except KeyboardInterrupt:
> > >         pass
> > >
> > > suggest yes.  On the other hand, the section on
> > > "Set signal handlers for SIGINT and SIGTERM"
> > > suggests not, unless an explicit handler is registered and then only on
> > > Unix.
> > >
> > > In any case, Adam Bartos, python-list, "An asyncio example", today
> asks.
> > > '''
> > > This is a minimal example:
> > >
> > > import asyncio
> > >
> > > async def wait():
> > >     await asyncio.sleep(5)
> > >
> > > loop = asyncio.get_event_loop()
> > > loop.run_until_complete(wait())
> > >
> > > Ctrl-C doesn't interrupt the waiting, instead KeyboardInterrupt occurs
> > > after those five seconds. It's 3.5.0b2 on Windows. Is it a bug?
> > > '''
> > >
> > > Using run_forever instead, I found no way to stop other than killing
> the
> > > process (Idle or Command Prompt).
> > >
> > > --
> > > Terry Jan Reedy
> > >
> > > _______________________________________________
> > > 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)
> > _______________________________________________
> > 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/rdmurray%40bitdance.com
> _______________________________________________
> 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/20150704/956c5891/attachment.html>


More information about the Python-Dev mailing list