Skip to content

Ignoring KeyboardInterrupt #295

Closed
Closed
@amackillop

Description

@amackillop
  • uvloop version: 0.14.0rc1
  • Python version: 3.7.4
  • Platform: Manjaro
  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: Yes
  • Does uvloop behave differently from vanilla asyncio? How?: Vanilla loop respects the KeyboardInterrupt while uvloop ignore it.

Here is a code snippet:

import asyncio
from aiohttp import web
import uvloop

async def start(app: web.Application, host: str, port: int) -> web.AppRunner:
    """Start the server"""
    runner = web.AppRunner(app)
    await runner.setup()
    server = web.TCPSite(runner, host, port)
    await server.start()
    return runner

def main() -> None:
    """Entrypoint"""
    host = "0.0.0.0"
    port = 8000
    app = web.Application()
    loop = asyncio.get_event_loop()
    runner = loop.run_until_complete(start(app, host, port))
    print(f"======== Running on http://{host}:8000 ========\n" "(Press CTRL+C to quit)")
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        loop.run_until_complete(runner.cleanup())


if __name__ == "__main__":
    uvloop.install()
    main()

Execute the file:
python issue.py

Hit Ctrl+C.

The keyboard interrupt will be ignored. If you comment out line 28 uvloop.install() the interrupt is respected. This used to work fine, only noticed that it stopped working today.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions