Python Asyncio
Note: Interesting alternative 2018 - https://github.com/python-trio/trio
Summary
- loop = asyncio.get_event_loop()
- loop.run_forever() - Run until stop() is called, Blocks
- loop.close() Close the event loop. The loop must not be running. Pending callbacks will be lost.
- loop.call_soon(callback, *args)
- loop.call_later(delay, callback, *args) - delay seconds
- asyncio.time() - Return the current time, as a float value
- loop.create_task(coro) - run async function as co-routine. == asyncio sleep function that can be quit with event ==
- globals.exitEvent = asyncio.Event()
async def sleep(timeout): ''' replacement asyncio.sleep function. it also exits when receiving globals.exitEvent event. ''' print(f"sleep({timeout}) enter ... exitEvent={globals.exitEvent.is_set()}") try: await asyncio.wait_for( globals.exitEvent.wait(), timeout ) print("sleep: got globals.exitEvent() quitting ...") except asyncio.TimeoutError: print(f"sleep({timeout}) except asyncio.TimeoutError - pass") pass return globals.exitEvent.is_set(
...