Weather Undground API лимит вызовов в минуту

Я должен ограничить свой запрос API 10 вызовами в минуту, как я могу изменить циклы for для этого?

Я пытаюсь добавить в time.sleep(8) в for observation петля без удачи... Есть идеи?

import arrow # learn more: https://python.org/pypi/arrow
from WunderWeather import weather # learn more: https://python.org/pypi/WunderWeather
import time

api_key = ''
extractor = weather.Extract(api_key)
zip = '53711'

# get 20170101 00:00
begin_date = arrow.get("2017","YYYY")
# get 20171231 23:00
end_date = arrow.get("2018","YYYY").shift(hours=-1)
for date in arrow.Arrow.range('hour',begin_date,end_date):
  # get date object for feature
  # http://wunderweather.readthedocs.io/en/latest/WunderWeather.html#WunderWeather.weather.Extract.date
  date_weather = extractor.date(zip,date.format('YYYYMMDD'))

  # use shortcut to get observations and data
  # http://wunderweather.readthedocs.io/en/latest/WunderWeather.html#WunderWeather.date.Observation
  for observation in date_weather.observations:
    time.sleep(8)
    print("Date:",observation.date_pretty)
    print("Temp:",observation.temp_f)

2 ответа

В зависимости от того, как в реальном времени вам нужны ваши данные или вы можете позволить себе отставать на один день, вы можете получить все наблюдения за датой в прошлом, которая будет представлять собой один вызов API для извлечения данных за день (или это может быть конец дня). резюме наблюдений за текущий день).

В качестве альтернативы, если вы пытаетесь получить текущую погоду каждые х минут или около того (под лимитом), я бы использовал какой-то цикл с таймером (или, возможно, витой, который, кажется, абстрагирует "петлю"), но сделал бы вызов к одному из следующих (в зависимости от того, что вы ищете). Ваш текущий код ищет даты в прошлом, но эти другие конечные точки относятся к текущему дню.

Вам не нужен таймер в цикле наблюдений, поскольку, как упоминалось выше, его может не быть.

http://wunderweather.readthedocs.io/en/latest/WunderWeather.html

http://wunderweather.readthedocs.io/en/latest/WunderWeather.html

которые можно назвать похожими на следующие примеры: http://wunderweather.readthedocs.io/en/latest/index.html

Возможное объяснение того, почему вы все еще превышаете лимит API, может быть связано со строкой, на которой вы добавляете время ожидания. Если полученный ответ API не содержит никаких наблюдений, внутренний цикл не будет выполнен. Итак, сначала я бы попытался переместить время ожидания во внешнем цикле сразу после вызова API.

Вы также можете использовать что-то вроде loopingCall из twisted, чтобы планировать выполнение своей задачи каждые X секунд. http://twistedmatrix.com/documents/9.0.0/core/howto/time.html

Другие вопросы по тегам