인프런 커뮤니티 질문&답변

김동혁님의 프로필 이미지
김동혁

작성한 질문수

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

Redis 서버 구동 및 접속

AttributeError: 'NoneType' object has no attribute 'send'

작성

·

1.3K

·

수정됨

0

 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.6

channels 4.0.0

channels-redis 4.1.0

입니다.

답변 3

1

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

강의 5:08 구간처럼 settings.CHANNEL_LAYERS 설정을 아래 스샷과 같이 확인해보셨나요?

image

settings.py 코드 내역과 장고 쉘에서 확인한 해당 설정값을 댓글로 보여주시겠어요?

get_channel_layer 구현을 보시면, CHANNEL_LAYERS에서 지정 alias 키의 설정이 없을 경우, None을 반환하기도 합니다. // CHANNEL_LAYERS 입력에서 오타가 있으시거나, 'default' 키에서 오타가 있으실 수도 있습니다.

image

https://github.com/django/channels/blob/093326080b4984fcb39f51955681800e39e14f43/channels/layers.py#L352

확인해보시고, 댓글 부탁드립니다.

화이팅입니다. :-)

0

.env 파일에 REDIS_URL다음 "="를 띄우면 안됩니다.

이진석님의 프로필 이미지
이진석
지식공유자

맞습니다. 그 설정은 무시됩니다. 👍

0

김동혁님의 프로필 이미지
김동혁
질문자

아무래도 프로젝트 설정파일을 못읽는거같아서

os.environ["DJANGO_SETTINGS_MODULE"] = "backend.settings"

이 부분을 수정했더니 잘 됩니다. !! 감사합니다.

os.environ["DJANGO_SETTINGS_MODULE"] = "backend.settings.settings로 바꿨어용 "

이진석님의 프로필 이미지
이진석
지식공유자

잘 구동된다니 다행입니다. :-)

그런데 settings 경로가 좀 이상한데요.

지금 settings.py 파일의 전체 경로가 어떻게 되나요? settings 폴더 안에 settings.py파일이 있나요?

김동혁님의 프로필 이미지
김동혁

작성한 질문수

질문하기