#format wiki
#language en
= Python Asyncio =
 * https://docs.python.org/3/library/asyncio-eventloop.html
 * 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(

}}}



...