Библиотека pyowm
позволяет получать прогнозы погоды с сайта https://openweathermap.org. Это прекрасно работает в небольшой программе, которую я написал для загрузки краткосрочного прогноза (см. ниже, за исключением моего ключа API, который я пометил X; вставьте свой собственный ключ API, если вы хотите протестировать код, они в свободном доступе на openweathermap).
#!/usr/bin/env python
import pyowm
import json
owm = pyowm.OWM('XXXXXXXXXXXXX') # You MUST provide a valid API key
forecaster = owm.three_hours_forecast('Santa Fe, US')
forecast = forecaster.get_forecast()
forecastJSON=json.loads(forecast.to_JSON())
def oneForecast():
mrForecast = forecastJSON['weathers'][:1]
return mrForecast[0]['detailed_status']
def printForecast():
print oneForecast()
if __name__ == "__main__":
printForecast()
Это отлично работает из командной строки. Однако, если я создам другую программу, которая периодически вызывает oneForecast(), она возвращает правильный ответ в первый раз, а затем НИКОГДА НЕ МЕНЯЕТ СВОИ ПРОГНОЗЫ.
См. например
#!/usr/bin/env python
import time
import msForecast
def run():
while True:
text = msForecast.oneForecast()
print text
time.sleep(10.0)
if __name__ == "__main__":
run_text = run()
Эта программа при запуске из командной строки должна печатать простой прогноз каждые десять секунд. Поскольку он каждый раз обращается к API, этот прогноз должен обновляться по мере изменения погоды, но это не так. Если прогноз «небольшой дождь» при первом запуске программы, он будет печатать «небольшой дождь» каждые десять секунд в течение неопределенного времени, без каких-либо изменений.
Я сделал ошибку в том, как второй бит кода вызывает первый? Есть ли какой-то кеш, который нужно сбросить? Что я могу здесь упустить?