Объект 'WebSocketProtocol' не имеет атрибута 'application_queue' error Django Channels - PullRequest
0 голосов
/ 02 мая 2018

В моем проекте Django я хочу создать приложение чата с использованием каналов. Но когда я следовал этому уроку: https://channels.readthedocs.io/en/stable/tutorial/part_2.html, у меня возникла проблема с автоматическим отключением websocket после подключения:

 Exception in callback AsyncioSelectorReactor.callLater.<locals>.run()
at
 C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twisted\internet\asyncioreact
 or.py:287 handle: <TimerHandle when=19405.993
 AsyncioSelectorReactor.callLater.<locals>.run() at
 C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twisted\interne
 t\asyncioreactor.py:287> Traceback (most recent call last):   File
 "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\asyncio\events.py",
 line 145, in _run
     self._callback(*self._args)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twisted\internet\asyncioreactor.py",
 line 290, in run
     f(*args, **kwargs)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\twisted\internet\tcp.py",
 line 289, in connectionLost
     protocol.connectionLost(reason)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\autobahn\twisted\websocket.py",
 line 128, in connectionLost
     self._connectionLost(reason)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\autobahn\websocket\protocol.py",
 line 2467, in _connectionLost
     WebSocketProtocol._connectionLost(self, reason)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\autobahn\websocket\protocol.py",
 line 1096, in _connectionLost
     self._onClose(self.wasClean, WebSocketProtocol.CLOSE_STATUS_CODE_ABNORMAL_CLOSE, "connection was
 closed uncleanly (%s)" % self.wasNotCleanReason)   File
 "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\autobahn\twisted\websocket.py",
 line 171, in _onClose
     self.onClose(wasClean, code, reason)   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\daphne\ws_protocol.py",
 line 146, in onClose
     self.application_queue.put_nowait({ AttributeError: 'WebSocketProtocol' object has no attribute 'application_queue'

Ответы [ 3 ]

0 голосов
/ 05 мая 2018

миграция решит это для меня

python manage.py migrate
0 голосов
/ 17 мая 2018

Просто, чтобы прояснить эту ошибку для всех, кто сталкивается с ней, следуя инструкциям по каналам для меня, ошибка была в моем пути

2018-05-17 15: 55: 36,382 - ОШИБКА - ws_protocol - [Экземпляр сбоя: Traceback:: маршрут не найден «WS / чат / я /'.

Вы можете найти его поверх трассировки стека

Мой недопустимый шаблон URL "buzz", потому что я люблю что-то менять. По сути, он работает так же, как шаблоны URL-адресов django, поэтому просто нужно убедиться, что ваша структура маршрутизации соответствует заданной вами.

websocket_urlpatterns = [
    url(r'^ws/buzz/(?P<room_name>[^/]+)/$', consumers.ChatConsumer),
]

В моем случае путь маршрута не соответствовал моим шаблонам веб-сокетов Мне пришлось обновить путь маршрута, чтобы он был правильным -> изменив мои websocket_urlpatterns обратно на чат

websocket_urlpatterns = [
    url(r'^ws/chat/(?P<room_name>[^/]+)/$', consumers.ChatConsumer),
]

Так что система могла решить мою проблему. Надеюсь, это поможет людям, которые столкнутся с этим в будущем. Удачи. Физподготовка

0 голосов
/ 03 мая 2018

Над этой ошибкой должен быть список путей, а вверху этих путей - настоящая ошибка. В моем случае это был URL-адрес маршрутизации.

...