python flask - вызов api не работает в развернутом приложении - PullRequest
0 голосов
/ 06 августа 2020

У меня есть приложение flask, и я пытаюсь выяснить, почему один из моих маршрутов не работает. Не думаю, что проблема в маршруте. Ошибка возникает при вызове функции, которая включает запрос API.

Вот маршрут:

@app.route("/weather_forecast/<climbing_area>/<city_id>/<lat>/<lon>/<weather_site>")
def weather_forecast(climbing_area, city_id, lat, lon, weather_site):

    sites = db.create_site_list_sqlite()
    daily_forecast = wf.format_daily_forecast(city_id)
    extended_forecast = wf.format_extended_forecast(city_id)
    historical_forecast = wf.get_historical_weather(lat, lon)
    dates = wf.get_date_range()


    return render_template('weather_forecast.html', 
                   climbing_area=climbing_area, 
                   city_id=city_id, 
                   daily_forecast=daily_forecast, 
                   extended_forecast=extended_forecast, 
                   historical_forecast=historical_forecast,
                   dates=dates,
                   lat=lat,
                   lon=lon,
                   weather_site=weather_site,
                   sites=sites,
                   wf=wf)

Моя ошибка связана со строкой daily_forecast = wf.format_daily_forecast(city_id)

Эта строка использует ключ API для запроса данных о погоде из https://openweathermap.org/api в зависимости от местоположения, указанного в аргументе city_id.

Вот полное сообщение об ошибке из журнала ошибок:

[2020-08-04 12:28:17,529] ERROR in app: Exception on /weather_forecast/American Fork/5779334/40.42/-111.97/Orem [GET]
  Traceback (most recent call last):
  File "/home/epurpur/ClimbingWeatherAppFlask/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
 File "/home/epurpur/ClimbingWeatherAppFlask/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
 File "/home/epurpur/ClimbingWeatherAppFlask/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
 File "/home/epurpur/ClimbingWeatherAppFlask/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
raise value
 File "/home/epurpur/ClimbingWeatherAppFlask/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
 File "/home/epurpur/ClimbingWeatherAppFlask/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
 File "/home/epurpur/ClimbingWeatherAppFlask/weather_app_main.py", line 46, in weather_forecast
daily_forecast = wf.format_daily_forecast(city_id)
 File "/home/epurpur/ClimbingWeatherAppFlask/weather_forecast.py", line 49, in format_daily_forecast
todays_data = extended_forecast_data[0]['list']
 KeyError: 'list'

Опять же, функция daily_forecast, которая использует ключ API для получения данных о погоде, упоминается в журнале ошибок:

 File "/home/epurpur/ClimbingWeatherAppFlask/weather_app_main.py", line 46, in weather_forecast
daily_forecast = wf.format_daily_forecast(city_id)

Но я не знаю почему? При локальном запуске приложения проблем нет. Должно быть что-то еще, что я смотрю?

Хотя последнее сообщение в журнале ошибок - это todays_data = extended_forecast_data[0]['list'], этот список не существует, потому что нет данных, возвращенных из вызова API, в приведенном выше упомянуто daily_forecast шаг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...