inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편

채팅방 삭제 구현

채팅방 삭제 관련 오류가 뭐때문인지 모르겠습니다..

597

AeGin

작성한 질문수 2

0

안녕하세요

새 프로젝트를 만들어서 강사님 강의대로 구현했을 때에는 에러가 뜨지 않았는데요

제가 하던 간단한 프로젝트에서 채팅기능 추가하려고 하니까, 에러가 나네요..

강의 동영상 7분전까지는 오류없이 채팅방 삭제가 잘 되었는데요. 8분쯤 나오는 채팅방 삭제에 따른 웹소켓 연결 끊기 부분에서 잘못된것 같습니다.

채팅방을 만든 상태에서 채팅방을 삭제하면

WebSocket DISCONNECT /ws/chat/11/chat/ [127.0.0.1:54878]
Task exception was never retrieved
future: <Task finished name='Task-335' coro=<Connection.disconnect() done, defined at /Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py:723> exception=RuntimeError("Task <Task pending name='Task-335' coro=<Connection.disconnect() running at /Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py:736>> got Future <Future pending> attached to a different loop")>
Traceback (most recent call last):
  File "/Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py", line 736, in disconnect
    await self._writer.wait_closed()  # type: ignore[union-attr]
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/streams.py", line 344, in wait_closed
    await self._protocol._get_close_waiter(self)
RuntimeError: Task <Task pending name='Task-335' coro=<Connection.disconnect() running at /Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py:736>> got Future <Future pending> attached to a different loop
Task exception was never retrieved
future: <Task finished name='Task-336' coro=<Connection.disconnect() done, defined at /Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py:723> exception=RuntimeError("Task <Task pending name='Task-336' coro=<Connection.disconnect() running at /Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py:736>> got Future <Future pending> attached to a different loop")>
Traceback (most recent call last):
  File "/Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py", line 736, in disconnect
    await self._writer.wait_closed()  # type: ignore[union-attr]
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/streams.py", line 344, in wait_closed
    await self._protocol._get_close_waiter(self)
RuntimeError: Task <Task pending name='Task-336' coro=<Connection.disconnect() running at /Users/hugo/Desktop/venv/chaegbang/lib/python3.10/site-packages/redis/asyncio/connection.py:736>> got Future <Future pending> attached to a different loop

이렇게 나옵니다. 검색해도 잘 모르겠습니다...

새로운 프로젝트만들어서 했을 때에는 이런 오류가 안떴는데 패키지 버전문제일까요??

python django django-channels

답변 1

0

이진석

안녕하세요.

에러화면 만으로는 질문의 맥락을 모두 파악하기가 어렵네요.

위 오류의 재현과정을 순서대로 좀 더 상세히 설명해주시겠어요?

구현과정에 대한 맥락이 파악이 되어야, 제가 보다 좋은 답변을 드릴 수 있을 듯 합니다.

화이팅입니다. :-)

0

AeGin

위 강의내용대로

views.py 에서 room_delete를 구현했고

urls.py 에서 라우팅 지정하고,

여기까지 한 다음에 템플릿에서 채팅방 삭제 url 버튼을 등록해서 삭제하면 제대로 채팅방이 삭제가 됐었습니다.

 

그런데, 채팅방을 삭제할 때 웹소켓을 통해서 채팅방 유저에게 채팅방 삭제를 알리는 구현과정에서,

def room__on_post_delete 시그널을 등록하고, ChatConsumer 에서 커스텀 종료코드와 함께 웹소켓 연결을 끊는 과정에서 뭔가 처리가 잘 안되는 것 같습니다.

채팅방을 삭제하기를 눌렀을 때, 제가 처음에 올린 에러 코드가 뜨구요...

근데, admin에서 채팅방을 삭제를 했을 때에는 modal창이 뜨면서 제대로 동작하네요

0

이진석

admin을 통한 삭제에서는 의도하신 대로 동작을 한다면, model signal은 동작을 한다고 봐야겠구요. 직접 뷰를 통한 삭제에서 뭔가 맞지 않는 부분이 있는 듯 합니다.

가능하다면 전체 프로젝트 코드와 함께, 제가 해당 이슈를 재현해볼 수 있도록, 오류 재현과정도 설명해주시면, 제가 보다 좋은 답변을 드릴 수 있을 듯 합니다.

유저목록 확인 문제 질문드립니다.

0

164

2

안녕하세요 선생님,

0

91

1

하나의 채팅방만 만들어보려고 하는데 잘 안되고 있습니다.

0

103

1

도커와 연동 관련 질문드립니다.

0

205

3

채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리

0

165

2

안녕하세요, onopen() 문제로 질문드립니다.

0

137

2

Consumer Instances 관련 질문 있습니다.

0

72

2

안녕하세요, 요청은 채널스에서 먼저 받고, http 요청은 장고를 통해서 처리한다고 하셨는데요.

0

79

2

기능 구현 질문 드립니다.

0

115

1

git에 있는 코드를 다운 받아 실행 해봤는데 에러가 났습니다.

0

153

2

ValueError: No route found for path 'ws/liveblog/'.

0

134

2

지정 경로에 템플릿 파일 만드는 단축키가 뭔가요?

0

121

2

채팅 내역을 영구적으로 저장하고 싶습니다.

0

89

1

질문이 있습니다.

0

164

1

구독 채팅 구현

0

212

1

헷갈려서 질문드립니다.

0

355

2

@login_required 장식자를 적용한후에는 로그인을 성공하면 채팅방으로 어떻게 이동을 하는 건가요?

1

276

1

docker run -d --restart always --name redis7 --publish 6379:6379 redis:7

0

261

1

websocket 자바스크립트 클라이언트 구현?

0

361

1

메세지 리액션 : 좋아요. 질문 드립니다.

0

359

1

{유저명}님이 메세지 입력 중입니다. 메세지 질문드립니다.

0

610

1

채팅 로비에서 유저수 노출을 위하여

0

326

1

채팅방에서 마지막 유저가 나가면 채팅방 자동 삭제 질문드립니다.

0

432

1

동기방식의 consumer 클래스와 비동기방식의 consumer클래스의 차이가 뭔지 궁금합니다.

0

425

1