Почему SSE работает локально, но не работает при размещении на IIS?

Я использую Django eventstream для SSE и Channels (я не могу использовать Memurai или Redis). Когда я запускаю локальный сервер, все работает отлично. Пользователь может отправить файл, эта информация сравнивается с внешним сторонним API, который он вызывает, и информация в реальном времени отображается обратно в браузер из /events/ URL API.

При настройке через IIS все работает отлично, за исключением того, что URL /events/ недоступен (404), поэтому SSE соединение не инициируется, что останавливает все на своем пути, и я смотрю на пустой шаблон, который должен заполняться в реальном времени.

WebApp размещается только в локальной сети.

Я пытался использовать Daphne с различными ошибками:

daphne mysite.asgi:application:

Traceback (most recent call last):
  File "C:\Python\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python\Scripts\daphne.exe\__main__.py", line 7, in <module>
  File "C:\Python\lib\site-packages\daphne\cli.py", line 170, in entrypoint
    cls().run(sys.argv[1:])
  File "C:\Python\lib\site-packages\daphne\cli.py", line 232, in run
    application = import_by_path(args.application)
  File "C:\Python\lib\site-packages\daphne\utils.py", line 12, in import_by_path
    target = importlib.import_module(module_path)
  File "C:\Python\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\inetpub\wwwroot\mysite\.\mysite\asgi.py", line 15, in <module>
    from myapp1.routing import ws_urlpatterns
  File "C:\inetpub\wwwroot\mysite\.\myapp1\routing.py", line 2, in <module>
    from .consumers import WSConsumer
  File "C:\inetpub\wwwroot\mysite\.\myapp1\consumers.py", line 19, in <module>
    from . import views
  File "C:\inetpub\wwwroot\mysite\.\myapp1\views.py", line 10, in <module>
    from myapp1 import myapp1_alarm_delete
  File "C:\inetpub\wwwroot\mysite\.\myapp1\myapp1_alarm_delete.py", line 30, in <module>
    from myapp1.models import myapp1User
  File "C:\inetpub\wwwroot\mysite\.\myapp1\models.py", line 4, in <module>
    class myapp1User(models.Model):
  File "C:\Python\lib\site-packages\django\db\models\base.py", line 108, in __new__
    app_config = apps.get_containing_app_config(module)
  File "C:\Python\lib\site-packages\django\apps\registry.py", line 253, in get_containing_app_config
    self.check_apps_ready()
  File "C:\Python\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
    settings.INSTALLED_APPS
  File "C:\Python\lib\site-packages\django\conf\__init__.py", line 82, in __getattr__
    self._setup(name)
  File "C:\Python\lib\site-packages\django\conf\__init__.py", line 63, in _setup
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Поэтому я пытаюсь использовать daphne settings.configure()

C:\inetpub\wwwroot\mysite>daphne settings.configure()
Traceback (most recent call last):
  File "C:\Python\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python\Scripts\daphne.exe\__main__.py", line 7, in <module>
  File "C:\Python\lib\site-packages\daphne\cli.py", line 170, in entrypoint
    cls().run(sys.argv[1:])
  File "C:\Python\lib\site-packages\daphne\cli.py", line 232, in run
    application = import_by_path(args.application)
  File "C:\Python\lib\site-packages\daphne\utils.py", line 11, in import_by_path
    module_path, object_path = path.split(":", 1)
ValueError: not enough values to unpack (expected 2, got 1)

Asgi.py

import os
import django
from django.core.asgi import get_asgi_application


from myApp1.routing import ws_urlpatterns
from django.conf import settings
from django.conf.urls import url
import django_eventstream

from mysite.settings import DEBUG


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter

application = ProtocolTypeRouter({
    'http': URLRouter([
        url(r'^events/', AuthMiddlewareStack(
            URLRouter(django_eventstream.routing.urlpatterns)
        ), { 'channels': ['test'] }),
        url(r'', get_asgi_application()),
    ]),
})

Settings.py

В вашем файле asgi в верхней части должно быть следующее

import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()
...
...
...
Вернуться на верх