Как запланировать запуск функции python каждый час в определенную минуту (например, 00, 10, 20) с помощью apscheduler - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь запланировать выполнение функции в моем скрипте каждый час в определенную минуту, т. Е. Если мой скрипт запускается в 11.46, моя функция запускается в 11.50, 12.00, 12.10 и т. Д., И делать то же самое в случае сбоя, и перезагружается. Я видел, что это можно сделать с помощью cron из командной строки, но есть ли способ сделать это, когда скрипт работает с планировщиком?

Я уже создал планировщик, который запускается каждые 10 минут после запуска моего сценария, но я хочу, чтобы моя функция выполнялась в определенные минуты, а не только в определенные интервалы.

from apscheduler.schedulers.background import BackgroundScheduler
import atexit

def demo_job:
    print("test")

try:
    sched = BackgroundScheduler(daemon=True)
    sched.add_job(demo_job, trigger='interval', minutes=10)
    sched.start()
    atexit.register(lambda: sched.shutdown(wait=False))
except:
    print("Unexpected error:")

Если мой скрипт запускается в 11.47, первый запланированный вызов моей функции - в 11.57, следующий - в 12.07, 12.17 и т. Д. ... Я хочу, чтобы первый запуск был в 12.00, следующий - в 12.10, 12.20 и т. Д.

1 Ответ

1 голос
/ 24 июня 2019

Вы можете попробовать использовать cron-триггер .

sched.add_job(
    demo_job, 
    trigger='cron',
    minute='*/10',
    hour='*'
)

Выражение */10 будет запускать задание каждую десятую минуту, начиная с минимального значения. Crontab ref

...