Встречается на собеседованиях • сегодня
Как в Django реализована работа с WebSocket
Django сам по себе не поддерживает WebSocket, так как работает по протоколу HTTP. Для работы с WebSocket в Django-проектах обычно используют:
- Channels - самое популярное решение. Это расширение Django, добавляющее поддержку асинхронных протоколов:
python
# consumers.py
from channels.generic.websocket import AsyncWebsocketConsumer
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
await self.accept()
async def disconnect(self, close_code):
pass
async def receive(self, text_data):
await self.send(text_data="Echo: " + text_data)- Настройка routing.py:
python
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r'ws/chat/$', consumers.ChatConsumer.as_asgi()),
]- Требуется ASGI-сервер (Daphne, Uvicorn) вместо WSGI. В settings.py:
python
ASGI_APPLICATION = 'project.routing.application'Ключевые особенности:
- Channels добавляет layer-систему для работы с сокетами
- Поддерживает синхронный и асинхронный код
- Интегрируется с Django ORM и сессиями
- Требует Redis или другой бэкенд для layer'а в production
Для простых случаев можно использовать django-websocket, но Channels - более мощное решение.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы