인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

朴俊相님의 프로필 이미지
朴俊相

작성한 질문수

실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍

Asynchronous(비동기화)로 채팅 서버 업그레이드 하기

channels alternative?

작성

·

143

1

  1. 강의에서는 공식문서 참고해서 daphne기반의 장고 채팅 앱을 구현했는데, gunicorn, uvucorn 등의 다른 asgi server 를 사용해서 channels를 이용하는데 문제 없을까요? 검색해서 확실한 답변을 찾기가 어려웠습니다.

  2. 장고 4부터 공식적으로 async기능을 지원해서 channels없이도 websocket을 이용한 비동기로 정보를 주고 받는게 가능한 것으로 알고 있습니다. gunicorn 기반의 웹소켓 어플리케이션을 구현하는 예제를 보면 간단한 정보를 주고 받는 정도는 쉽게 가능 할 것 같지만, 챗 앱에 필요한 기능을 구현하기에는 channels을 사용하는 것에 비교해서 많은 시간을 요하며, channels layer처럼 multi server에 대응해서 chnnels group형태를 구현하기 막막해 보입니다. channels이외에 다른 장고 웹소켓용 유용한 패키지가 있을까요? 특히 cookiecutter-django와 호환 되었으면 좋겠습니다.

답변 1

0

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 朴俊相님,

일단, Daphne는 Channels 공식 문서에서 기본적으로 추천하는 ASGI 서버입니다. Channels 개발자들에 의해 만들어졌기 때문에, Channels와의 호환성과 통합 면에서 가장 확실한 선택입니다. 설명을 덧붙이자면, Uvicorn은 빠르게 인기를 얻고 있는 가벼운 ASGI 서버로, FastAPI와 같은 다른 비동기 프레임워크와 함께 자주 사용됩니다. Uvicorn도 Django Channels와 호환되므로, Channels 애플리케이션을 실행하는 데 사용할 수 있습니다. 또한, Gunicorn은 WSGI 서버로 잘 알려져 있지만, Uvicorn이나 Daphne와 같은 ASGI 서버를 worker class로 사용하여 ASGI 애플리케이션을 호스팅 할 수 있습니다.

두번째 질문에 대한, 제 생각은, 현재까지 Django에서 WebSocket, long-polling, 기타 비동기 기능을 구현하는 가장 널리 사용되고 잘 문서화된 방법은 아무래도 Django Channels입니다. 예제도 많구요. 또한, Django Channels는 이미 Cookiecutter-Django와 잘 통합될 수 있도록 설계된 걸로 알고 있는데 아닌가요? 제 뇌피셜로는 Cookiecutter-Django를 사용하는 경우 Channels를 사용하여 WebSocket 기능을 구현하는 것이 가장 쉽고 간단한 방법일 것 같습니다.

朴俊相님의 프로필 이미지
朴俊相

작성한 질문수

질문하기