Форум сайта python.su
0
Доброго всем дня! Растолкуйте пожалуйста, в чем трабл:
есть модуль, который возвращает список о текущей погоде. Вот эго функция.
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)
Офлайн
73
функция тут не при чем. она записывает в список данные из глобальной области а там возможно они у вас и не обновляются
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)
Офлайн
124
tomahawkсвежие данные должны быть в в непонятной w из которой берутся к примеру temperature('celsius'),каким методом в этой w они обновляются?
Как сделать, чтобы при обновлении страницы функция weatherfunc() давала свежие данные? Заранее спасибо!
Офлайн
0
Вот весь модуль 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()
Офлайн
124
Скорее всего вот здесь приходят данные,
observation = mgr.weather_at_place(sity)
Офлайн
0
xam1816Спасибо!
Скорее всего вот здесь приходят данные,
Офлайн