Запланируйте задачу на каждый час и подождите, если задача не выполнена - PullRequest
0 голосов
/ 26 февраля 2020

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

. После запуска функции необходимо запустить один час для ее повторного запуска. С этим приходит проблема. То, что функция становится длиннее и дольше для завершения, может занять больше часа, чтобы завершить эту функцию. Это означает, что планировщик вызвал бы функцию до ее завершения. Цель состоит в том, чтобы запускать эту функцию каждый час с момента ее начала, но ждать ее завершения, когда ее запуск занимает более часа.

Это то, что я пытался:

from threading import Thread
from apscheduler.schedulers.blocking import BlockingScheduler
import threading
import time

def job():
    # This is a function that takes longer
    # and longer
    # and longer
    # to complete

thread = Thread(target = job)
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', hours=1)

if thread.is_alive():
    print("waiting")
else:
    scheduler.start()
...