Closed
Description
- 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.