Планирование в Python — работает нормально, пока не произойдет

#python #schedule

#python #Расписание

Вопрос:

Я ищу некоторую помощь в планировании задач в Python. Я использую schedule для запуска скрипта («NQV5_0») в одно и то же время каждый день (0930).

Приведенный ниже код идеально подходит для того, что мне нужно, за исключением случаев, когда это не так. Это будет работать 1-2 дня подряд, но на третий день в 09: 30 ничего не происходит, и мне приходится вручную запускать NQV5_0. Сообщения об ошибке нет, и оператор print продолжает функционировать.

Есть предложения относительно того, что может быть причиной того, что оно не запускается на третий день?

 import schedule
import time
import importlib

launch_time = "09:30"  # time to launch script


def job():  # imports script
    importlib.import_module('NQV5_0')


schedule.every().day.at(launch_time).do(job)

while True:  # below is what happens before launch time while waitin& for scheduled job to run
    schedule.run_pendin&()
    print("r Waitin& to launch at", launch_time, "Time now:", time.ctime(), end="", flush=True)
    time.sleep(1)
  

Комментарии:

1. Возможно ли воспроизвести эту проблему, запланировав ее три или более раз с интервалом всего в 1 минуту или около того? Это было бы быстрее для отладки.

2. Schedule выполняется только до тех пор, пока скрипт действительно запущен. Похоже, что через 2 дня (или любое другое количество времени) ваш скрипт закрывается каким-то процессом. Вероятно, вы захотите использовать что-то вроде планировщика задач (Windows) или crontab (Linux) для обработки чего-то подобного.

3. @Rashid’Leee’Ibrahim согласен с использованием планировщика операционной системы, но в OP указано, что print функция все еще показывает выходные данные на третий день; поэтому скрипт все еще запущен.

4. Вы импортируете библиотеку / пакет / модуль. Выполняется ли этот модуль при импорте? Обычно Python выполняет только один импорт, затем просто повторно использует пространство имен при следующем импорте, не перезагружая модуль (и, следовательно, ничего в нем не выполняет).

5. Возможно, вам нужно использовать reload() . Оно перезагружает ранее импортированный модуль.