Получить количество секунд до начала следующего часа - PullRequest
0 голосов
/ 15 октября 2018
  • В настоящее время я использую REST API, который разрешает только 1000 запросов в час
  • После того, как 1000 запросов израсходованы, вам нужно дождаться начала следующего часа для счетчика.для сброса
  • Моя цель - определить количество секунд, которое я должен ждать до начала следующего часа
  • В настоящее время я использую метод time.sleep, чтобы поставить скриптспать до начала следующего часа

Я собрал довольно грубое решение, используя библиотеку datetime (добавляя две минуты, чтобы быть в безопасности)

import datetime

# Determine the seconds until the next hour (add 2 minutes to be safe)
now = datetime.datetime.now()
next_hour = datetime.datetime(now.year, now.month, now.day, now.hour + 1, 2)
sleep_seconds = (next_hour - now).seconds

# Put the execution to sleep for a while
print("Sleeping for {0} minutes...".format(sleep_seconds // 60))
time.sleep(sleep_seconds)

Этот скрипт работает, но ненадежен, когда следующий час является началом следующего дня.

  • datetime ожидает значения часов между 0..23
  • Если метод datetime.datetime.now() вернул 23, метод потерпит неудачу, если вы передадите 24 в datetimeobject
  • Также было бы ненадежно, если бы следующий день перешел и на следующий месяц или год.

Может ли кто-нибудь предложить лучшее решение, которое бы учитывало эти проблемы?

1 Ответ

0 голосов
/ 15 октября 2018

Думаю, datetime.timedelta поможет вам в этом случае.Примерно так:

import datetime

delta = datetime.timedelta(hours=1)
now = datetime.datetime.now()
next_hour = (now + delta).replace(microsecond=0, second=0, minute=2)

wait_seconds = (next_hour - now).seconds   

replace должно работать, чтобы округлить вас до следующего часа.

...