Форум сайта python.su
Доброго всем дня! Растолкуйте пожалуйста, в чем трабл:
есть модуль, который возвращает список о текущей погоде. Вот эго функция.
def weatherfunc(): data = [] data.append(sity) data.append(w.wind()) data.append(w.humidity) data.append(w.temperature('celsius')) data.append(w.detailed_status) data.append(w.rain) data.append(w.heat_index) data.append(w.clouds) data.append(date.today()) icon = status() data.append(icon) dir = direction() data.append(dir) speed = 10/w.wind().get('speed') data.append(str(speed)+'s') return data
@app.route("/weather", methods=['POST', 'GET']) def weather(): from weather import weatherfunc data = weatherfunc() queryString_cur = """SELECT round((temp0+temp1+temp2)/3, 1), baro, round((gydro0+gydro1+gydro2)/3, 1), round((temp4)/2, 1), round((gydro4)/2, 1) FROM avg_sensors ORDER BY id DESC LIMIT 1""" temp_sensorsLast_cur = SQLfunction.sqlfuncselect(queryString=queryString_cur) return render_template('weather.html', version=version, data=data, temp_sensorsLast_cur=temp_sensorsLast_cur)
Отредактировано tomahawk (Фев. 22, 2021 16:38:15)
Офлайн
функция тут не при чем. она записывает в список данные из глобальной области а там возможно они у вас и не обновляются
def weatherfunc(): data = [] data.append(sity) return data sity = 'oooo' for _ in range(5): print(weatherfunc()) # и когда sity обновляется for i in range(5): sity = i print(weatherfunc())
Отредактировано marvellik (Фев. 22, 2021 18:30:42)
Офлайн
tomahawkсвежие данные должны быть в в непонятной w из которой берутся к примеру temperature('celsius'),каким методом в этой w они обновляются?
Как сделать, чтобы при обновлении страницы функция weatherfunc() давала свежие данные? Заранее спасибо!
Офлайн
Вот весь модуль weather.py
from pyowm import OWM from datetime import date from pyowm.utils.config import get_default_config from options import weatherAPItoken sity = 'Odesa, UA' config_dict = get_default_config() config_dict['language'] = 'ru' owm = OWM(weatherAPItoken, config_dict) mgr = owm.weather_manager() observation = mgr.weather_at_place(sity) w = observation.weather def direction(): if 0 < w.wind().get('deg') < 30: direction = 'южное' elif 30 <= w.wind().get('deg') < 60: direction = 'юго-восточное' elif 60 <= w.wind().get('deg') < 120: direction = 'восточное' elif 120 <= w.wind().get('deg') < 150: direction = 'северо-восточное' elif 150 <= w.wind().get('deg') < 210: direction = 'северное' elif 210 <= w.wind().get('deg') < 240: direction = 'северо-западное' elif 240 <= w.wind().get('deg') < 300: direction = 'западное' elif 300 <= w.wind().get('deg') < 330: direction = 'юго-западное' else: direction = 'южное' return direction def status(): if w.detailed_status == 'ясно': widget = '''<div class="icon sunny"><div class="sun"><div class="rays"></div></div></div>''' elif w.detailed_status == 'пасмурно': widget = '''<div class="icon cloudy"><div class="cloud"></div><div class="cloud"></div></div>''' elif w.detailed_status == 'небольшой дождь': widget = '''<div class="icon rainy"> <div class="cloud"></div> <div class="rain"></div></div>''' elif w.detailed_status == 'небольшая морось': widget = '''<div class="icon rainy"> <div class="cloud"></div> <div class="rain"></div></div>''' elif w.detailed_status == 'снег': widget = '''<div class="icon flurries"> <div class="cloud"></div> <div class="snow"> <div class="flake"></div> <div class="flake"></div></div></div>''' elif w.detailed_status == 'небольшой снег': widget = '''<div class="icon flurries"> <div class="cloud"></div> <div class="snow"> <div class="flake"></div> <div class="flake"></div></div></div>''' elif w.detailed_status == 'плотный туман': widget = '''<div class="icon rainy"> <div class="cloud"></div> <div class="fog"></div> </div>''' elif w.detailed_status == 'туман': widget = '''<div class="icon rainy"> <div class="cloud"></div> <div class="fog"></div> </div>''' elif w.detailed_status == 'переменная облачность': widget = '''<div class="icon cloudy"><div class="cloud"></div><div class="cloud"></div></div>''' elif w.detailed_status == 'облачно с прояснениями': widget = '''<div class="icon cloudy"><div class="cloud"></div><div class="cloud"></div></div>''' else: widget = '''''' return widget def weatherfunc(): data = [] data.append(sity) data.append(w.wind()) data.append(w.humidity) data.append(w.temperature('celsius')) data.append(w.detailed_status) data.append(w.rain) data.append(w.heat_index) data.append(w.clouds) data.append(date.today()) data.append(status()) data.append(direction()) speed = 10/w.wind().get('speed') data.append(str(speed)+'s') return data if __name__ == '__main__': weatherfunc()
Офлайн
Скорее всего вот здесь приходят данные,
observation = mgr.weather_at_place(sity)
Офлайн
xam1816Спасибо!
Скорее всего вот здесь приходят данные,
Офлайн