kentuck1213
@kentuck1213

После закрытие страницы websocket все равно работает?

После того как клиент коннектится к сокетам, на сервере срабатывает функция которая обрабатывается около 1 -2 секунд, затем возвращает результат клиенту через вебсокеты. Проблема в том что если десять раз подряд перезагрузить страницу, то функция будут обрабатываться десять раз и затем эти данные летят в молоко, что порождает ошибку:
2018-12-13 11:14:38,459 WARNING  Application instance <Task pending coro=<SessionMiddlewareInstance.__call__() running at /var/www/my_project/.venv/lib/python3.6/site-packages/channels/sessions.py:179> wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /usr/local/lib/python3.6/asyncio/futures.py:407, <TaskWakeupMethWrapper object at 0x7f6bc08826d8>()]>> for connection <WebSocketProtocol client=['my_ip', 63499] path=b'/ws/ticket/12/24/'> took too long to shut down and was killed.

А следущий клиент будет ждать около полу минуты, чтобы пришел ответ от websocket.
Как быть? возможно ли решить проблему на уровне nginx ?
Django 2
Django channels daphne
  • Вопрос задан
  • 421 просмотр
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Во-первых, запущенные таски и сопрограммы надо отменять в методе disconnect. Во-вторых, есть незакрытый баг в Daphne с такими же симптомами.
Ответ написан
Ваш ответ на вопрос

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

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