最も簡単で一般的な方法は、スケジュールされたジョブの最後にコールバック関数を追加することです。スケジューラークラスの上にビルドして、タスクの最後に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)
はい、私は同意するものとします。私はgitterチャンネルで作者に尋ねましたが、これはAPSchedulerでは不可能であることがわかりました。あなたが言うことは合法ですが、私のユースケースは、起動するプロセスに時間がかかるため、スケジューラがジョブを起動したときに完全なものとしてマークすることはできません。私が知ることができるのは、完全な状態を示す独立した別のジョブを追加することですが、(1)何も保証することはできません。(2)醜いです。だから最後に私はこれをあきらめました。それをマークしてはいけません。ありがとうございます。 – FaithReaper