Utilizo Django Channels en combinación con una interfaz Javascript separada. Los websockets funcionan bien. Lo que ahora quiero hacer es:
message.channel_session['my_id'] Sin embargo, a veces esto parece funcionar y, a veces, obtengo un KeyError ; my_id no parece existir. Mi código:
routing.py :
from channels.routing import route from chat.consumers import ws_connect, ws_receive channel_routing = [ route("websocket.connect", ws_connect), route("websocket.receive", ws_receive), ] Y consumers.py :
import uuid from channels.sessions import channel_session @channel_session def ws_connect(message): message.channel_session['my_id'] = str(uuid.uuid4()) @channel_session def ws_receive(message): my_id = message.channel_session['my_id'] # this one sometimes fails... Sin embargo, cuando cambio el backend de la capa de canal de Redis a en memoria, funciona bien (uso ./manage.py runserver para no ejecutar un trabajador separado)
¿Algunas ideas? ¿Hay una condición de carrera o algo así?