import asyncio import socket from contextlib import suppress try: import hunter except ImportError: print('Run "pip install hunter" to enable tracing') else: predicates = [hunter.Q(function=func) for func in ('remove_reader', 'add_reader', 'add_writer', 'remove_writer')] hunter.trace(hunter.Or(*predicates), kind='call', action=hunter.CallPrinter) async def main(): server_sock = socket.socket() server_sock.setblocking(False) server_sock.bind(('127.0.0.1', 0)) server_sock.listen() sockaddr = server_sock.getsockname() with suppress(asyncio.TimeoutError): await asyncio.wait_for(loop.sock_accept(server_sock), 0.1) print('closing server socket, fd:', server_sock.fileno()) server_sock.close() client_sock = socket.socket() client_sock.setblocking(False) print('connecting, fd:', client_sock.fileno()) with suppress(ConnectionRefusedError): await loop.sock_connect(client_sock, sockaddr) loop = asyncio.get_event_loop() loop.run_until_complete(main())