Регулярно планировать задачу в разное время в Python

#python #scheduled-tasks #schedule

#python #запланированные задачи #Расписание

Вопрос:

Я хотел бы запланировать задачу на минуту: 57 и минуту: 05, чередуя каждые два часа. Таким образом, интервал во время выполнения составляет от 52 минут до 68 минут, в среднем 60 минут. Для данного часа x время, когда я хотел бы выполнить код, составляет: x: 05; x: 57; (x 2):05, (x 2):57; … В настоящее время я использую модуль Python schedule и следующий код:

 schedule.every(2).hours.at(':05').do(job1)
schedule.every(2).hours.at(':57').do(job2)

while True:
    schedule.run_pending()
    time.sleep(1)
  

Как я могу наилучшим образом гарантировать, что код не выполняется в x: 57, а затем снова в (x 1):05 в течение следующего часа (что означает, что интервал составляет всего 8 минут)?

Редактировать: я мог бы добавить что-то вроде:

 minutes = datetime.now().minutes
if not (minutes  < 5 or minutes  > 57):
    time.sleep(60 - minutes)
  

и затем запланируйте, но я бы пропустил 2 выполнения, что не идеально.

Комментарии:

1. Итак, если вы запустите это в 1:00, вы хотите, чтобы задание выполнялось в 1:05, 2:05, 2:57, 3:57, 4:05?

2. Если я начну ее в 1: 00, я хотел бы запустить ее в 1:05, 1:57, 3:05, 3:57… Если я действительно начну ее в 1: 00, мой приведенный выше код должен работать просто отлично. Но она должна работать безупречно в любое время. Если я начну ее, скажем, в 1: 50, она должна сначала выполняться в 1:57, а затем в 3: 05, а не в 2:05. Надеюсь, что это прояснит ситуацию!

3. Итак, если вы запустите ее в 2: 00, вы хотите, чтобы первый запуск был в 3:05 или 2:05?

4. Первая в 2:05