python asyncio observer pattern