2017-12-30 33 views
0

xとyの間に5秒ごとにprint datetimeを実行しようとしています。2つの異なる時刻間でジョブスケジューラを実行しています

以下のコードを使用することで、開始時刻を正しく設定することができ、ジョブは完全に実行されます。しかし、私は時間yに仕事を停止することはできません。

import schedule 
import time 
from datetime import datetime 

schedule.clear() 

def job(): 
    print(datetime.now()) 

schedule.every(5).seconds.do(job) 

while 1: 
    if datetime.now()>=datetime(2017,12,31,1,49) : 
     schedule.run_pending() 
     time.sleep(1) 

Documentation複数のジョブをキャンセルする例を提供しかし、私は毎朝午前9時から始まり、午後3時

+0

すべてのジョブを一度にキャンセルしてもよろしいですか? – hansaplast

+0

@hansaplastはい、私は仕事が1つしかないので、問題はありません –

答えて

1

を停止して何かを探しています

ことを行うことができませんでし先に作成したジョブの参照を取得するschedule.cancel_job()があります。または、すべてのジョブを削除する単純なschedule.clear()があります。

import schedule 
import time 
from datetime import datetime, timedelta 

schedule.clear() 

def job(): 
    print(datetime.now()) 

j = schedule.every(1).seconds.do(job) 

start = datetime.now() 
end = start + timedelta(seconds=5) 

while True: 
    schedule.run_pending() 
    time.sleep(1) 
    if datetime.now() > end: 
     print('cancelling job') 
     schedule.cancel_job(j) 
     break 

print(schedule.jobs) # shows empty list, as they are no open jobs 
time.sleep(5) # just to double check that it does no longer trigger 
関連する問題