Search code examples
pythonschedule

Python schedule jobs doesn't start


Why the work is not being performed? If you remove schedule.clear() everything works, but the scripts are duplicated.

def greet(name):
    print('Hello', name)

while True: 
    schedule.clear()
    with open("config.json") as config:
        data = json.load(config)
        if data["start"]:
            date = data["time"]          
            for i in date:
                schedule.every().day.at(i).do(greet, name =data["name"])  
            config.close()
            all_jobs = schedule.get_jobs()
            print(all_jobs)
            schedule.run_pending()
            time.sleep(1)

output

[Every 1 day at 09:18:00 do greet(name='Лариса') (last run: [never], next run: 2021-06-26 09:18:00), Every 1 day at 09:19:00 do greet(name='Лариса') (last run: [never], next run: 2021-06-25 09:19:00), Every 1 day at 09:20:00 do greet(name='Лариса') (last run: [never], next run: 2021-06-25 09:20:00)]
[Every 1 day at 09:18:00 do greet(name='Лариса') (last run: [never], next run: 2021-06-26 09:18:00), Every 1 day at 09:19:00 do greet(name='Лариса') (last run: [never], next run: 2021-06-26 09:19:00), Every 1 day at 09:20:00 do greet(name='Лариса') (last run: [never], next run: 2021-06-25 09:20:00)]

Solution

  • thank you all for your help. I found this solution

    while True:
            with open("config.json") as config:
                data = json.load(config)
                if data["start"]:
                    date = data["time"]
                    now = datetime.datetime.now() 
                    now = now.strftime('%H:%M')
                    for i in date:
                        if i == now:
                            great(data["name"])
                time.sleep(1)