Event LoopΒΆ
Event loop that executes every n seconds
#!/usr/bin/python3
import asyncio
import signal
def main():
        loop = asyncio.get_event_loop()
        asyncio.ensure_future(listen_to_ipc_channel_layer())
        for sig in (signal.SIGINT, signal.SIGTERM):
                loop.add_signal_handler(sig, ask_exit)
        loop.run_forever()
        print("Close")
        loop.close()
@asyncio.coroutine
def listen_to_ipc_channel_layer():
        while True:
                try:
                        #print("Running")
                        run()
                        yield from asyncio.sleep(0.1)
                except asyncio.CancelledError as e:
                        print("\nBreak it out")
                        raise e # Raise a proper error
# Stop the loop concurrently
@asyncio.coroutine
def exit():
        loop = asyncio.get_event_loop()
        print("Stop")
        loop.stop()
def ask_exit():
        for task in asyncio.Task.all_tasks():
                task.cancel()
        asyncio.ensure_future(exit())
# check the I/O for changes
def run():
        #print('run')
        print(f'keypress {poll()}')
if __name__ == "__main__":
        main()