Как установить часовой диапазон и минутный интервал с помощью APScheduler - PullRequest
7 голосов
/ 27 марта 2020

Я пытаюсь создать процесс, который может запускать задания по расписанию cron 0/5 8-17 * * 1-5, и вот мой тестовый код:

import argparse
from apscheduler.schedulers.background import BackgroundScheduler
import datetime
import time

cmdline_parser = argparse.ArgumentParser(description='Testing')
cmdline_parser.add_argument('--interval', type=int, default=5)

def task():
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    print(f'{now}')

if __name__=='__main__':
    args = cmdline_parser.parse_args()
    sched = BackgroundScheduler(timezone='EST')
    sched.start()
    minutes_interval = f'0/{args.interval}'

    sched.add_job(task, trigger='cron', day_of_week='mon-fri', hour='8-17', minute=minutes_interval)

    while True:
        time.sleep(30)

Но он не останавливается после 5 вечера. Пожалуйста, помогите, если я неправильно использую аргументы cron.

1 Ответ

2 голосов
/ 01 апреля 2020

индекс часов cron от 0, поэтому используйте hour = '7-16' вместо hour = '8-17'

sched.add_job(task, trigger='cron', day_of_week='mon-fri', hour='7-16', minute=minutes_interval)
...