2017-12-26 58 views

답변

1

가장 쉬운 방법은 콜백 함수를 예약 된 작업의 끝에 추가하는 것입니다. 또한 태스크의 끝에 self.function_callback()을 포함하도록 스케줄러 클래스 위에 빌드 할 수 있습니다.

빠른 예 :

def tick(): 
    print('Tick! The time is: %s' % datetime.now()) 
    time.sleep(10) 
    function_cb() 

def function_cb(): 
    print "CallBack Function" 
    #Do Something 

if __name__ == '__main__': 
    scheduler = AsyncIOScheduler() 
    scheduler.add_job(tick, 'interval', seconds=2) 
    scheduler.start() 
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C')) 
    # Execution will block here until Ctrl+C (Ctrl+Break on Windows) is pressed. 
    try: 
     asyncio.get_event_loop().run_forever() 
    except (KeyboardInterrupt, SystemExit): 
     pass 
     scheduler.shutdown(wait=False) 
+0

는 그래, 난 동의합니다. 나는 거터 채널에서 저자에게 물어 봤고 이것이 APScheduler로는 불가능하다는 것을 알았습니다. 당신이 말하는 것은 합법적이지만, 유스 케이스는 다르다. 왜냐하면 실행 프로세스가 시간이 걸리기 때문에 스케줄러가 작업을 시작할 때 그것을 완료로 표시 할 수는 없다. 내가 알아낼 수있는 유일한 사실은 완전한 상태를 표시하기 위해 독립적 인 다른 직업을 추가하는 것이지만, (1) 아무 것도 보증 할 수 없다는 것, (2) 못생긴 것 : 한 가지로 두 가지 일을하는 것입니다. 그래서 마침내 나는 이것을 포기하고 그것을 표시하지 마십시오. 감사합니다. 승인 된 것으로 표시됩니다. – FaithReaper