Запускать задание каждые 4 дня, но первый запуск должен произойти сейчас

Я пытаюсь настроить APScheduler для запуска каждые 4 дня, но мне нужно, чтобы задание запускалось сейчас. Я попытался использовать триггер interval, но обнаружил, что он ждет указанный период перед запуском. Также я попытался использовать cron следующим образом:

sched = BlockingScheduler()
sched.add_executor('processpool')

@sched.scheduled_job('cron', day='*/4')
def test():
    print('running')

Одна последняя идея, которую я получил, заключалась в использовании start_date в прошлом:

@sched.scheduled_job('interval', seconds=10, start_date=datetime.datetime.now() - datetime.timedelta(hours=4))

но это все еще ждет 10 секунд перед запуском.


person PepperoniPizza    schedule 28.01.2018    source источник


Ответы (2)


Попробуйте это вместо этого:

@sched.scheduled_job('interval', days=4, next_run_time=datetime.datetime.now())
person Alex Grönholm    schedule 29.01.2018
comment
он не работает, он пропускает его на несколько миллисекунд. - person MrR; 27.07.2020

Аналогично приведенному выше ответу, с той лишь разницей, что он использует метод add_job.

scheduler = BlockingScheduler()
scheduler.add_job(dump_data, trigger='interval', days=21,next_run_time=datetime.datetime.now())
person Yogesh Kate    schedule 05.09.2019
comment
он не работает, он пропускает его на несколько миллисекунд. - person MrR; 27.07.2020
comment
Что вы имеете в виду, пропустив его на несколько миллисекунд? APScheduler (3.x) имеет точность в одну секунду. - person Alex Grönholm; 28.07.2020