Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...

Как решить ошибку при приготовлении websocket на django 3.1?

Готовлю websoketa для django 3.1. Использую рецепт: https://alex-oleshkevich.medium.com/websockets-in-.... И прям все понятно, но что-то не работает. Валится по ошибке:
Traceback (most recent call last):
  File "C:\Python\3.8\lib\wsgiref\handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "C:\Python\ENV\myapp\lib\site-packages\django\contrib\staticfiles\handlers.py", line 76, in __call__
    return self.application(environ, start_response)
TypeError: wsgi() missing 1 required positional argument: 'send'


И что за 'send' и откуда его взять -- не понимаю. Правда, т.к. разработка ведётся в PyCharm под Windows, то запускаю не через asgi.py, а через wsgi.py... (не доступны сторонние серверы приложений, типа unicorn под виндой), Пробовал использовать waitress (обёртку поверх wsgi) -- эффект тот-же:
TypeError: wsgi() missing 1 required positional argument: 'send'
Waitress готовлю так: рядом с manage.py, создаю server.py:
from waitress import serve
from myapp.wsgi import application

if __name__ == '__main__':
    serve(application, port='5678')


Запускаю $ python server.py или waitress-serve --port=5678 myapp.wsgi:application -- та же ошибка с аргументом 'send'...

P.S. Я знаю про channels и django-websocket. Но они тоже требуют asgi. Буду рад, если подскажете другие рецепты. Слушать websoket не нужно. Только "говорить. Главное, чтоб можно было использовать и тестить в dev под Windows (и желательно не покидая PyCharm)
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
@bacon
В "рецепте" же явно указано что нужен именно ASGI, а не WSGI protocol
PS когда мне нужен websoket в django с WSGI, я просто рядом ставил aiohttp, который запускал через custom command
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы