Выполнять python скрипт каждые 15 минут, начиная с 9:30:42 до 15:00:42 каждый день с понедельника по пятницу. - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужен способ выполнять мой python скрипт каждые 15 минут, начиная с 9:30:42 до 15:00:42 каждый день с понедельника по пятницу.

Я исследовал APScheduler с синтаксисом cron, но не могу понять, как кодировать вышеуказанное условие. Я попробовал ниже, но не работает (выполнить это имя моей функции)

sched.add_cron_job(execute, day_of_week='mon-fri', hour='9:30:42-15:00:42', minute='*/15')

Любой указатель высоко ценится.

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Я написал собственный код для решения моей проблемы. Размещение здесь на случай, если это кому-то поможет. Любые предложения по оптимизации приветствуются.

Первый бесконечный l oop запускает задание при наступлении времени запуска. 2-й бесконечный l oop просыпается каждые x минут, чтобы проверить, приближается ли время следующего запуска. Если да, он выполняется, иначе возвращается в режим сна. Если конечное время выполнения достигнуто, оно вспыхивает

def execute_schedule_custom():
start_time_of_day = datetime.combine(date.today(), time(9, 30, 42))
next_run_time = start_time_of_day
end_time_of_day = datetime.combine(date.today(), time(15, 0, 42))

interval = 15
sleep_secs = 60 * 5 #sleep for 5 mins

while True:
    if datetime.now() >= start_time_of_day:
        execute()
        next_run_time = start_time_of_day + timedelta(minutes=interval)
        break

while True:
    if datetime.now() >= end_time_of_day:
        break
    elif datetime.now() >= next_run_time:
        execute()
        next_run_time = next_run_time + timedelta(minutes=interval)
    t.sleep(sleep_secs)
1 голос
/ 11 апреля 2020

Насколько я могу сказать, вы не сможете делать то, что вы хотите, с одной работой.

Это самое близкое, что я мог получить с одной: 30-59/15 9-14 * * 1-5, что равно Каждые 15 минут, с 30 до 59 часов, с 09:00 до 14:59, с понедельника по пятницу .

Хотя это не совсем то, что вы хотели, надеюсь, это поможет база .

...