#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']
для получения порта с хоста, но этот порт уже используется.