asyncio在特定时间调度回调

asyncio scheduling callback at specific time

在下面的代码中,callback() 没有在响应时间(now+0.2and now+0.1)和 stopper() 被调用,这里有什么问题

    def callback(n,loop):
        print('Callback {} invoked at {}'.format(n,loop.time()))

    def stopper(loop):
        print("Stopper invoked at {}".format(loop.time()))
        loop.stop() 

    event_loop = asyncio.get_event_loop()
    try:
        now =event_loop.time()
        print('clock time: {}'.format(time.time()))
        print('loop time: {}'.format(now))
        print('Registering callbacks')
        event_loop.call_later(now + 0.2,callback,1,event_loop)
        event_loop.call_later(now + 0.1,callback,2,event_loop)
        event_loop.call_later(now + 0.3,stopper,event_loop)
        event_loop.call_soon(callback,3,event_loop)
        print('Entering event loop')
        event_loop.run_forever()
    finally:
        print('Closing event loop')
        event_loop.close();

.call_later(delay, cb, *args) 需要 delay 个参数,以秒为单位的时间增量 (float)。

但是您将 now + delay 传递给这些调用。

删除 now 或将 .call_later() 替换为 .call_at()