2016-08-09 17 views
0

Im folgenden Code, der Rückruf() nicht an der repsective Zeit genannt (jetzt + 0.2and jetzt + 0,1) und auch Stopper(), was falsch ist hierasyncio Scheduling Rückruf zu einer bestimmten Zeit

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

Bitte beschreiben Sie besser was "nicht zur jeweiligen Zeit" bedeutet. Wann erwarten Sie, dass es angerufen wird, wann wird es tatsächlich aufgerufen? – deceze

+0

Callback() wird jetzt nicht + 0,2 und jetzt + 0,1 aufgerufen – Rajeev

Antwort

2

.call_later(delay, cb, *args) erfordert delay Parameter, Zeit Delta in Sekunden (float).

Aber Sie übergeben now + delay an diese Anrufe.

Entweder now fallen lassen oder .call_later() durch .call_at() ersetzen.