import asyncio import os verbose = print class EchoServer(asyncio.Protocol): def connection_made(self, transport): self.transport = transport peername = transport.get_extra_info('peername') verbose('Connection from', peername) def data_received(self, data): message = data.decode() verbose('Recv:', message) self.transport.write(data) verbose('Sent:', message) self.transport.abort() def main(): loop = asyncio.get_event_loop() coro = loop.create_server(EchoServer, '127.0.0.1', 8888) server = loop.run_until_complete(coro) for sock in server.sockets: print('PID({}) serving on {}'.format(os.getpid(), sock.getsockname())) loop.create_task(server.wait_closed()) try: loop.run_forever() except KeyboardInterrupt: pass finally: server.close() loop.run_until_complete(server.wait_closed()) loop.close() if __name__ == '__main__': main()