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(...
