Почему я получил ошибку 401 при запросе данных в докере ⇐ Python
Почему я получил ошибку 401 при запросе данных в докере
Я разработал скрипт Python для запуска в Docker.
Сценарий:
из фляги импорта Flask запросы на импорт приложение = Колба(__name__) api_key = "308b62e9a346baf4145ea2f25ecf480e" @app.route('/') индекс защиты(): вернуть «Приложение работает!» @app.route('//') защита Weather_by_city (город): url=f'http://api.openweathermap.org/data/2.5/ ... d={api_key}' ответ = запросы.получить (URL) если ответ.код_статуса == 200: данные = ответ.json() temp = (данные['main']['temp']-273.15) # Округляем температуру до двух десятичных знаков. rounded_temp = круглый (температура, 2) print(f'Температура: {rounded_temp} по Цельсию') desc = data['погода'][0]['описание'] print(f'Описание: {desc}') еще: print('Ошибка получения данных о погоде') если __name__ == '__main__': app.run(хост="0.0.0.0", порт=5000) DockerFile:
ИЗ Python:3 ENV PYTHONНЕБУФЕРИРОВАННЫЙ 1 ЗАПУСК mkdir/приложение РАБОЧИЙ ДИАПАЗОН/приложение КОПИРУЙТЕ файл require.txt /app. RUN pip install --upgrade pip ЗАПУСТИТЬ pip install -r требования.txt КОПИРОВАТЬ. /приложение ЭКСПОЗИЦИЯ 5000 CMD ["python", "app.py"] И требования.txt:
certifi==2019.9.11 шарде==3.0.4 Нажмите == 7.0 Колба==1.1.1 идна==2.8 это опасно == 1.1.0 Джинджа2==2.10.3 РазметкаSafe==1.1.1 запросы==2.31.0 urllib3==2.0.7 Веркцойг==0.16.0 Я выполняю следующие команды внутри папки, содержащей указанные выше файлы:
sudo docker build -t Weather:v1 . sudo docker run -dit --rm -p 5000:5000 --name погода погода:v1 Я подтверждаю, что докер работает:
ИДЕНТИФИКАТОР КОНТЕЙНЕРА ИЗОБРАЖЕНИЕ КОМАНДА СОЗДАНО СТАТУС ИМЕНА ПОРТОВ 1597682007cb погода:v1 "python app.py" 5 минут назад Up 5 минут 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp погода Когда я хочу запросить данные, я использую следующую команду:
curl http://0.0.0.0:5000/лондон Получение этого вывода:
404 не найден Не найден Запрошенный URL-адрес не найден на сервере. Если вы ввели URL вручную, проверьте правильность написания и повторите попытку.
Если попытаться использовать команду в python3:
>>> запросы на импорт >>> Requests.get('http://api.openweathermap.org/data/2.5/ ... f25ecf480e') Что я делаю не так?
Спасибо за помощь!
Я разработал скрипт Python для запуска в Docker.
Сценарий:
из фляги импорта Flask запросы на импорт приложение = Колба(__name__) api_key = "308b62e9a346baf4145ea2f25ecf480e" @app.route('/') индекс защиты(): вернуть «Приложение работает!» @app.route('//') защита Weather_by_city (город): url=f'http://api.openweathermap.org/data/2.5/ ... d={api_key}' ответ = запросы.получить (URL) если ответ.код_статуса == 200: данные = ответ.json() temp = (данные['main']['temp']-273.15) # Округляем температуру до двух десятичных знаков. rounded_temp = круглый (температура, 2) print(f'Температура: {rounded_temp} по Цельсию') desc = data['погода'][0]['описание'] print(f'Описание: {desc}') еще: print('Ошибка получения данных о погоде') если __name__ == '__main__': app.run(хост="0.0.0.0", порт=5000) DockerFile:
ИЗ Python:3 ENV PYTHONНЕБУФЕРИРОВАННЫЙ 1 ЗАПУСК mkdir/приложение РАБОЧИЙ ДИАПАЗОН/приложение КОПИРУЙТЕ файл require.txt /app. RUN pip install --upgrade pip ЗАПУСТИТЬ pip install -r требования.txt КОПИРОВАТЬ. /приложение ЭКСПОЗИЦИЯ 5000 CMD ["python", "app.py"] И требования.txt:
certifi==2019.9.11 шарде==3.0.4 Нажмите == 7.0 Колба==1.1.1 идна==2.8 это опасно == 1.1.0 Джинджа2==2.10.3 РазметкаSafe==1.1.1 запросы==2.31.0 urllib3==2.0.7 Веркцойг==0.16.0 Я выполняю следующие команды внутри папки, содержащей указанные выше файлы:
sudo docker build -t Weather:v1 . sudo docker run -dit --rm -p 5000:5000 --name погода погода:v1 Я подтверждаю, что докер работает:
ИДЕНТИФИКАТОР КОНТЕЙНЕРА ИЗОБРАЖЕНИЕ КОМАНДА СОЗДАНО СТАТУС ИМЕНА ПОРТОВ 1597682007cb погода:v1 "python app.py" 5 минут назад Up 5 минут 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp погода Когда я хочу запросить данные, я использую следующую команду:
curl http://0.0.0.0:5000/лондон Получение этого вывода:
404 не найден Не найден Запрошенный URL-адрес не найден на сервере. Если вы ввели URL вручную, проверьте правильность написания и повторите попытку.
Если попытаться использовать команду в python3:
>>> запросы на импорт >>> Requests.get('http://api.openweathermap.org/data/2.5/ ... f25ecf480e') Что я делаю не так?
Спасибо за помощь!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Удаленный сервер возвратил ошибку: (401) Неавторизованный при запросе данных RestApi.
Anonymous » » в форуме C# - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Удаленный сервер вернул ошибку: (401) Неавторизован при запросе данных RestApi.
Anonymous » » в форуме C# - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Удаленный сервер вернул ошибку: (401) Несанкционирован при запросе данных RESTAPI
Anonymous » » в форуме C# - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Удаленный сервер вернул ошибку: (401) Несанкционирован при запросе данных RESTAPI
Anonymous » » в форуме C# - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Anonymous
-