#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