@RinoStop

Как хранить переменные в кэше, а через 3 часа их сбрасывать и запрашивать новые данные?

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

from pygismeteo import Gismeteo


gismeteo = Gismeteo()
search_results = gismeteo.search.by_query("Москва")
city_id = search_results[0].id
current = gismeteo.current.by_id(city_id)

#локальная дата
date = current.date.local

#температура воздуха
temp = current.temperature.air.c

#ощущается как
feel = current.temperature.comfort.c

#температура воды
water = current.temperature.water.c

#описание погоды
disc = current.description.full

#влажность
hum = current.humidity.percent

#геомагнитное поле
geo = current.gm

#атм.давление
atm = current.pressure.mm_hg_atm

#облачность
clod = current.cloudiness.type

#вероятность грозы ( True - Да  / False - Нет )
storm = current.storm

#осадки тип
type_osadki = current.precipitation.type

#Количество осадков (мм)
kolvo = current.precipitation.amount

#интенсивность осадков
kovo_osad = current.precipitation.intensity

#Погодное явление
phenomenon = current.phenomenon

#Направление ветра
wind_nap = current.wind.direction.scale_8

#скорость ветра
wind_speed = current.wind.speed.m_s

weather_gis = (f" Дата обновления погоды: {date}\n"
               f" Температура воздуха: {temp}°C\n"
               f"По ощущением как: {feel}°C\n "
               f" Температура воды: {water}°C\n"
               f" Описание погоды: {disc}\n"
               f"Влажность воздуха: {hum}%\n"
               f" Геомагнитное поле: {geo}\n"
               f" Атмосферное давление: {atm}мм.рт.с\n"
               f" Облачность: {clod}\n"
               f" Вероятность грозы: {storm}\n"
               f" Тип осадков: {type_osadki}\n"
               f" Количество осадков: {kolvo}мм\n"
               f" Интенсивность осадков: {kovo_osad}\n"
               f" Погодное явление: {phenomenon}\n"
               f" Скорость ветра: {wind_speed}м/c\n"
               f" Направление ветра: {wind_nap}")
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Храни дату последнего запроса к гисметео. При запросе данных проверяй, устарел ли кэш (сколько времени прошло с последнего запроса). Если устарел - делай новый запрос, помещай ответ в кэш.
А потом, независимо от условия, отдавай ответ из кэша.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Технически, выгодно установить redis или memcached и класть данные туда и запрашивать оттуда с указанием времени жизни для каждой записи (expiration = 10800 seconds)
$ redis-cli ......
set key ${city_id} ...... ex 10800
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы