Добавление веб-сокетов на сервер Django, развернутый в службе веб-приложений Azure

#python #django #azure #websocket #azure-web-app-service

#python #django #azure #websocket #azure-web-app-service

Вопрос:

У меня есть приложение Django, которое запускает сервер с использованием веб-сокетов https://websockets.readthedocs.io/en/stable/index.html библиотека для Python. manage.py файл выглядит следующим образом:

 import os
import sys
import asyncio
import threading

    if __name__ == '__main__':
        os.environ.setdefault(
            'DJANGO_SETTINGS_MODULE',
            'UPH_Chart_Re.settings')
        try:
            from django.core.management import execute_from_command_line
        except ImportError as exc:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            ) from exc
        try:
            from WebsocketClass import StartServer
            x = threading.Thread(group=None, target=StartServer, name="Websocket Thread")
            x.daemon=True
            x.start()
        except ImportError as exce:
            raise ImportError("Importing WebsocketsClass failed") from exce
        execute_from_command_line(sys.argv)
 

Функция startServer запускает сервер websocket с использованием asyncio:

     loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    start_server = websockets.serve(Receive, "localhost", 5001)
    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()
 

Веб-страницы Django и сервер websocket отлично работают на моем локальном компьютере. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что при развертывании в службе веб-приложений Azure я, похоже, не могу получить доступ к сокетам. Для моей службы веб-приложений Websockets установлено значение enabled, и я не получаю ошибок при развертывании. Однако, похоже, я вообще не могу подключиться к websocket.

Я попытался установить порт на 443, который считается запрещенным портом, поскольку он ниже 1024. Я пытался использовать os.environ['PORT'] для получения порта с хоста, но этот порт уже используется.