묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결ChatGPT 영어 상황극 채팅 서비스 만들기 (Feat. 파이썬/장고채널스)
현재(6/30) 깃헙 코드링크가 not found 뜹니다.
접속링크 확인좀 부탁드릴께요 :)
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
라이브러리 인식
프로젝트 생성 및 ASGI 개발서버 구동강의랑 똑같이 진행을 하였는데..PyCharm에서 django랑 channels 라이브러리를 인식 하지 못하는거 같습니다.라이브러리 목록에서는 보이는데 asgi.py 파일 에서는 라이브러리를 import해 오지 못하네요 이유를 알 수 있을가요?인식을 못하더라도 일단 코드 작성을 하면 서버 구동에는 문제가 없어요해당 부분 캡쳐 해서 같이 올리겠습니다.
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
AttributeError: 'NoneType' object has no attribute 'send'
import asyncio import os import django from channels.layers import get_channel_layer os.environ["DJANGO_SETTINGS_MODULE"] = "backend.settings" django.setup() async def main(): channel_layer = get_channel_layer() print(channel_layer) message_dict = {'content': 'world'} await channel_layer.send('hello', message_dict) response_dict = await channel_layer.receive('hello') is_equal = message_dict == response_dict print("송신/수신 데이터가 같습니까?", is_equal) asyncio.run(main())channel_layer가 자꾸 None으로 지정되서channel_layer.send이 부분도 실행이 안됩니다.구글링도 해보고 chatgpt에도 물어보고 redis 버전도 낮춰보고 다했는데 안됩니당..redis 4.3.6channels 4.0.0channels-redis 4.1.0입니다.
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
채팅서비스 배포시 구성
서비스 배포관련해서 질문이 있습니다. #1. redis서버 설치보통 서비스 배포시 redis서버는 어떻게 구성하나요? 구글링을 통해서 봤을때는 많은 경우, ec2내에 redis를 설치하는 모습이 보여서요. 보통 그렇게 진행하는지? #2. 가장 많이 사용하는 서버구성기본적으로 daphne가 받아서, http는 wsgi로, ws는 asgi로 보내는데. 어떤 곳에서는 Nginx로 daphne에게 ws만 넘기는게 좋다는 이야기도 있고 해서요. 보통 장고 channels로 개발시 서버는 어떤 구조가 많이 사용되나요? #3. daphne가 https도 wsgi로 잘 보내는지?application = ProtocolTypeRouter({ "http": django_asgi_app,현재 코드상에는 이렇게 해놓았는데, https처리하려면 추가적인 코드수정이 필요할까요?
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
로비 채팅 구현 섹션에서
안녕하세요 로비 채팅 구현 강의를 들으면서 구현 중인데 redis 서버도 정상적으로 잘 작동하고스크립트도 정확하게 썼는데 계속 채팅을 입력하고 엔터를 누르면 새로고침(초기화)이 되네요 ㅠㅠ 어떤게 문제일까요? 아무리 문제를 해결해봐도 이상한점은 찾아볼수가 없네요
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
1대1 채팅방 만들때
1대1 채팅 기능을 만들고있습니다.소켓을 연결할때 방 ID를 이용하여 방에 들어 갈때마다 하나 하나 소켓에 연결해야할까요 아니면상대방 userID로 소켓에 연결하여 방 id와 함께 메세지를 전송해야할까요??
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
배포 문제
안녕하세요 강사님. 강의를 듣고 배포중에 에러가 났습니다.AWS의 Lightsail react 인스턴스와 django 인스턴스를 하나씩 만들어서 배포하는 중 서버와 API통신은 되지만 Socket통신이 되지않고 있습니다.WebSocket connection to 'ws://{path}/ws/chat/' failed 와 같은 에러가 나타는데 혹시 네트워크 설정이나 따로 해줘야할 설정같은게 있을까요??
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
asgi 배포관련
안녕하세요 선생님강의를 다 듣고 본 강의를 기반으로 chat bot을 프로젝트로 배포하려고 하는 수강생입니다.aws를 통해서 배포하려고 자료를 찾아보는데 대부분 wsgi기반의 웹에 대해서 나와있더라고요.. 혹시 asgi를 기반으로 하는 웹은 어느경로를 통해서 배포하는게 나을지 물어볼 수 있을까요?
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
채팅할때 유저인증을 어떻게 처리해야 할까요??
다른 기능은 전부 스프링 서버에 구현 되어있고 장고는 채팅 서버만 구현되어있습니다. 이럴때 유저인증을 어떻게 해야할까요..
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
run_test_hello_channel.py 11002 Error
안녕하세요 강사님 run_test_hello_channel.py을 실행했더니 생기는 오류에 대해서 질문드립니다.실행을 했을시 True가 나올때도 있지만Traceback (most recent call last): File "D:\23_project\django_channels\venv\lib\site-packages\redis\asyncio\connection.py", line 709, in connect await self._connect() File "D:\23_project\django_channels\venv\lib\site-packages\redis\asyncio\connection.py", line 744, in _connect reader, writer = await asyncio.open_connection( File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\asyncio\streams.py", line 47, in open_connection transport, _ = await loop.create_connection( File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1016, in create_connection infos = await self._ensure_resolved( File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 1395, in _ensure_resolved return await loop.getaddrinfo(host, port, family=family, type=type, File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 855, in getaddrinfo return await self.run_in_executor( File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\concurrent\futures\thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\socket.py", line 955, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 11002] getaddrinfo failed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\23_project\django_channels\run_test_hello_channel.py", line 23, in <module> asyncio.run(main()) File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run return loop.run_until_complete(main) File "C:\Users\honge\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 641, in run_until_complete return future.result() File "D:\23_project\django_channels\run_test_hello_channel.py", line 16, in main await channel_layer.send('hello', message_dict) File "D:\23_project\django_channels\venv\lib\site-packages\channels_redis\core.py", line 218, in send await connection.zremrangebyscore( File "D:\23_project\django_channels\venv\lib\site-packages\redis\asyncio\client.py", line 484, in execute_command conn = self.connection or await pool.get_connection(command_name, **options) File "D:\23_project\django_channels\venv\lib\site-packages\redis\asyncio\connection.py", line 1525, in get_connection await connection.connect() File "D:\23_project\django_channels\venv\lib\site-packages\redis\asyncio\connection.py", line 715, in connect raise ConnectionError(self._error_message(e)) redis.exceptions.ConnectionError: Error 11002 connecting to redis-10519.c294.ap-northeast-1-2.ec2.cloud.redislabs.com:10519. 11002.위와 같은 에러가 발생할 때도 있습니다.혹시 지역이 일본으로 해놓아 거리때문에 생기는 이슈또는 너무 많은 요청에 의한 이슈일까요??
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
채팅방 퇴장시 퇴장 메시지 출력 안됨
안녕하세요.채팅방에서 유저가 퇴장했을때 퇴장 했다는 메시지가 보여지질 않습니다. 그래서 disconnect, chat_user_leave method에 print를 추가해서 확인을 해보니 disconnect method에서 is_last_leave는 True가 찍혀 채널 레이어 그룹에 type=‘chat.user.leave’ 메시지를 보내는 것은 되는거 같은데, 그 후 chat_user_leave method가 실행이 안되는거 같습니다. (추가한 print가 실행이 안되서 터미널에 아무것도 찍히지 않습니다.) 이 부분이 원인거 같은데 무슨 문제인지 어떻게 해결해야될지 모르겠어서 질문드립니다.
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
run_test_hello_channel.py 실행 no module named 'channel_redis' 오류 발생
m1 mac에서 강의를 듣고있습니다.env에서 channel_layer_redis 값을 파싱하는 것까지는 잘 따라왔는데run_test_hello_channel.py 에서 해당 오류가 발생하네요강사님 github에 있는 코드 그대로 복사해서 붙였는데도 오류가 나서 어디서부터 해결해야 할 지 모르겠습니다!도와주세요 ㅜㅜimport asyncioimport osimport djangofrom channels.layers import get_channel_layeros.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"django.setup()async def main(): channel_layer = get_channel_layer() message_dict = {'content': 'world'} await channel_layer.send('hello', message_dict) response_dict = await channel_layer.receive('hello') is_equal = message_dict == response_dict print("송신/수신 데이터가 같습니까?", is_equal)asyncio.run(main()) 터미널 결과는 다음과 같습니다. (webchat) tk_mac@itaegyeong-ui-MacBookAir webchat % python run_test_hello_channel.pyTraceback (most recent call last): File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 65, in makebackend backend_class = import_string(self.configs[name]["BACKEND"]) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/django/utils/module_loading.py", line 15, in cached_import module = import_module(module_path) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/importlib/__init__.py", line 126, in import_module return bootstrap.gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in gcdimport File "<frozen importlib._bootstrap>", line 1027, in findand_load File "<frozen importlib._bootstrap>", line 992, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed File "<frozen importlib._bootstrap>", line 1050, in gcdimport File "<frozen importlib._bootstrap>", line 1027, in findand_load File "<frozen importlib._bootstrap>", line 1004, in findand_load_unlockedModuleNotFoundError: No module named 'channel_redis' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/tk_mac/github/webchat/run_test_hello_channel.py", line 22, in <module> asyncio.run(main()) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/asyncio/runners.py", line 44, in run return loop.run_until_complete(main) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete return future.result() File "/Users/tk_mac/github/webchat/run_test_hello_channel.py", line 12, in main channel_layer = get_channel_layer() File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 357, in get_channel_layer return channel_layers[alias] File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 78, in getitem self.backends[key] = self.make_backend(key) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 44, in make_backend return self._make_backend(name, config) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 69, in makebackend raise InvalidChannelLayerError(channels.exceptions.InvalidChannelLayerError: Cannot import BACKEND 'channel_redis.core.RedisChannelLayer' specified for default
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
채팅방 삭제 관련 오류가 뭐때문인지 모르겠습니다..
안녕하세요새 프로젝트를 만들어서 강사님 강의대로 구현했을 때에는 에러가 뜨지 않았는데요제가 하던 간단한 프로젝트에서 채팅기능 추가하려고 하니까, 에러가 나네요.. 강의 동영상 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이렇게 나옵니다. 검색해도 잘 모르겠습니다...새로운 프로젝트만들어서 했을 때에는 이런 오류가 안떴는데 패키지 버전문제일까요??
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
django-rest-framework에 channels를 적용하고 싶습니다.
선생님, 안녕하세요~django rest framework와 함께 django channels를 사용하고 싶어서 질문드리게되었습니다!liveblog 실습 부분까지는 무난하게 따라올 수 있었는데요,drf와 django channels를 동시에 사용해보고 싶어서,예전에 작업해둔 drf 적용한 project에서 channels를 추가하여 실행해보려고 했는데,asgi를 적용하고 나서부터 runserver 시 TypeError: object HttpResponse can't be used in 'await' expression 라는 에러메시지를 받습니다.channels 공식 문서에 있는 djangochannelsrestframework 라는 프로젝트와 channels-api 라는게 있던데 아직 적용해보지는 않았습니다drf와 channels를 함께 사용하는데에 추천하시는 라이브라리나 이용방법이 있을까요?검색만으로는 막막하여 정리되지 않은 상태에서 질문을 드리는 것 같아 죄송하네요.좋은 강의 항상 감사합니다!!!
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
안녕하세요 실습 6:16 부분에서 오류가 발생합니다.
LG+ 사용중입니다. 해결 방법이 있을까요??