Как устранить ошибку “Контейнер mydashapp не отвечает на запросы HTTP на порту” при развертывании веб-приложения python dash?

#python #azure #port #plotly-dash

#python #azure #порт #plotly-dash

Вопрос:

— Чего я пытаюсь достичь? —

Привет, мне нужно развернуть веб-приложение python Dash в службе приложений Azure для проекта на моей работе. Я загрузил пример приложения dash hello world с github здесь и попытался развернуть его, следуя этим руководствам: Развертывание Dash в службе приложений Azure; Быстрый старт: создание приложения Python в службе приложений Azure в Linux

— Моя среда? —

ОС: Ubuntu 18.04 Python3.8

— Часть кода, создающая проблему? —

На самом деле я не знаю.

Вот мой requirements.txt

 attrs==20.2.0
beautifulsoup4==4.9.3
Brotli==1.0.9
certifi==2020.6.20
chardet==3.0.4
click==7.1.2
colorlover==0.3.0
dash==1.17.0
dash-core-components==1.13.0
dash-html-components==1.1.1
dash-renderer==1.8.3
dash-table==4.11.0
dash.ly==0.17.3
decorator==4.4.2
finsymbols==1.3.0
Flask==1.1.2
Flask-Compress==1.8.0
Flask-SeaSurf==0.2.2
future==0.18.2
gunicorn==20.0.4
idna==2.10
importlib-metadata==2.0.0
ipython-genutils==0.2.0
itsdangerous==1.1.0
Jinja2==2.11.2
jsonschema==3.2.0
jupyter-core==4.6.3
lxml==4.6.1
MarkupSafe==1.1.1
nbformat==5.0.8
numpy==1.19.4
pandas==1.1.4
pandas-datareader==0.9.0
plotly==4.12.0
pyrsistent==0.17.3
python-dateutil==2.8.1
pytz==2020.4
requests==2.24.0
requests-file==1.5.1
requests-ftp==0.3.1
retrying==1.3.3
six==1.15.0
soupsieve==2.0.1
traitlets==4.3.3
urllib3==1.25.11
Werkzeug==1.0.1
wrapt==1.12.1
zipp==3.4.0
  

И app.py сценарий

Я использую Azure CLI для развертывания приложения. Конфигурационный файл службы Azure my app:

 [defaults]
group = XXXXX
sku = F1
appserviceplan = XXXXX
location = centralus
web = test-surveillance-web-app
  

— Каким я ожидаю результата? —

После удаления приложения в службе приложений Azure я хочу получить доступ к веб-страницам при вводе URL-адреса

— Что я на самом деле получаю? —

Загрузка страницы занимает много времени и приводит к ошибке 502.

Когда я проверяю журналы, я вижу следующую ошибку

 2020-11-12T21:01:22.515Z ERROR - Container test-surveillance-web-app_0_4e7cb5d2 for site test-surveillance-web-app did not start within expected time limit. Elapsed time = 255.7862892 sec
**2020-11-12T21:01:22.597Z ERROR - Container test-surveillance-web-app_0_4e7cb5d2 didn't respond to HTTP pings on port: 8050, failing site start. See container logs for debugging.**
2020-11-12T21:01:22.841Z INFO  - Stopping site test-surveillance-web-app because it failed during startup.
/home/LogFiles/2020_11_12_lw0sdlwk000014_default_docker.log  (https://test-surveillance-web-app.scm.azurewebsites.net/api/vfs/LogFiles/2020_11_12_lw0sdlwk000014_default_docker.log)
**2020-11-12T15:21:06.661995783Z Please update the `dash` module to >= 0.23.1 to use this version of dash_core_components.**
**2020-11-12T15:21:06.662331698Z You are using version 0.17.3**
  

Я не понимаю, почему контейнер не отвечает на запрос на порт 8050, хотя в моем коде я прослушиваю этот порт с помощью инструкции app.run_server (порт = 8050, debug = True)

В поисках решения я увидел, что проблему можно решить, настроив следующие переменные среды в службе приложений: PORT и WEBSITES_PORT. Впоследствии я настроил эти переменные и свой код на порты 8080, 8000, 8050 и 80, но ошибка все еще присутствует.

Я уже проверил все возможные ответы в stackoverflow, но ни один из них не работает со мной. -_-

Спасибо за вашу ценную помощь

Ответ №1:

Веб-приложение прослушивает только порт 80. Если ваш контейнер прослушивает порт 8050, просто создайте для одного приложения WEBSITES_PORT значение 8050. Это перенаправит входящий трафик с порта 80 на порт 8050. Удалите другие настройки WEBSITES_PORT. Затем вы подключаетесь к своему контейнеру через порт 80.

Комментарии:

1. Привет, спасибо за ваш ответ. Ваше решение не решило проблему. В этом сообщении на GitHub я увидел кое-что об интеграции с виртуальной сетью. Это что-то говорит?