pythonで定期的にジョブを実行したい
●やりたいこと
・定期的にジョブを実行したい
・ジョブ:2重ループで下位ループは15分毎、上位ループは2時間毎に回して処理Aを行いたい
・午前0時~午前6時までは関数を実行したくない
●発生している問題
・scheduleを使用して指定の時間に実行開始
・関数内でtime関数を使用して午前0時~3時に実行したら関数を抜けるように実装しました。
・12/10に実行したところ、12/11の午前0時に関数を抜けて、すぐにスケジュールが呼び出される挙動になりました。
・そして12/11中は関数GetItemが実行されず、12/12になったら実行されるようになりました。
なぜこのような挙動になってしまうのか、またどうしたら毎日実行できるようになるか、アドバイスをいただけないでしょうか。
該当のソースコード
import datetime
import schedule
import time
############################################################
def GetItem():
try: for i in range(10): for j in range(2): now = datetime.datetime.now() stoptime = now.replace(hour=3, minute=0, second=0, microsecond=0) if now < stoptime: print(now) print("Time 24:00 over") time.sleep(10) return ###処理A### print("Success.") print("%s 現在\n"%(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))) print("wait") time.sleep(900) print("%s 現在\n"%(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))) print("wait") time.sleep(7200) except Exception as e: print("Error") print("%s 現在\n"%(datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))) print('type:' + str(type(e))) print('args:' + str(e.args))
#################################################
if name == "main":
GetItem()
schedule.every().day.at("06:05").do(GetItem)
schedule.every().day.at("07:05").do(GetItem)
schedule.every().day.at("08:05").do(GetItem)
schedule.every().day.at("09:05").do(GetItem)
schedule.every().day.at("10:05").do(GetItem)
schedule.every().day.at("11:05").do(GetItem)
schedule.every().day.at("12:05").do(GetItem)
schedule.every().day.at("13:05").do(GetItem)
schedule.every().day.at("14:05").do(GetItem)
schedule.every().day.at("15:05").do(GetItem)
schedule.every().day.at("16:05").do(GetItem)
schedule.every().day.at("17:05").do(GetItem)
schedule.every().day.at("18:05").do(GetItem)
schedule.every().day.at("19:05").do(GetItem)
schedule.every().day.at("20:05").do(GetItem)
schedule.every().day.at("21:05").do(GetItem)
schedule.every().day.at("22:05").do(GetItem)
schedule.every().day.at("23:05").do(GetItem)
while True: schedule.run_pending() time.sleep(60)
メッセージ
Success.
2020/12/10 23:50:42 現在
wait
2020/12/11 00:05:42 現在
wait
2020-12-11 02:05:42.176485
Time 24:00 over
2020-12-11 02:06:52.178112
Time 24:00 over
2020-12-11 02:07:02.178163
Time 24:00 over
2020-12-11 02:07:12.178251
Time 24:00 over
2020-12-11 02:07:22.178373
Time 24:00 over
2020-12-11 02:07:32.178504
Time 24:00 over
2020-12-11 02:07:42.178552
Time 24:00 over
2020-12-11 02:07:52.178711
Time 24:00 over
2020-12-11 02:08:02.178796
Time 24:00 over
2020-12-11 02:08:12.178808
Time 24:00 over
2020-12-11 02:08:22.178873
Time 24:00 over
2020-12-11 02:08:32.179045
Time 24:00 over
2020-12-11 02:08:42.179207
Time 24:00 over
2020-12-11 02:08:52.179301
Time 24:00 over
2020-12-11 02:09:02.179412
Time 24:00 over
2020-12-11 02:09:12.179649
Time 24:00 over
2020-12-11 02:09:22.179815
Time 24:00 over
2020-12-11 02:09:32.179925
Time 24:00 over
Success.
2020/12/12 06:05:49 現在
補足情報(FW/ツールのバージョンなど)
python3.6.4
windwos8
以上、よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/12 06:38