Rajeev
Rajeev

Reputation: 46909

asyncio scheduling callback at specific time

In the following code, the callback() is not called at the repsective time(now+0.2and now+0.1) and also stopper() ,what is wrong here

    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();

Upvotes: 0

Views: 753

Answers (1)

Andrew Svetlov
Andrew Svetlov

Reputation: 17366

.call_later(delay, cb, *args) requires delay parameters, time delta in seconds (float).

But you pass now + delay to these calls.

Either drop now or replace .call_later() with .call_at().

Upvotes: 2

Related Questions