Django Channels obtiene datos de la base de datos y los envía a través de un websocket.
error:
Archivo "/Users/soubhagyapradhan/Desktop/upwork/polyverse/polyverse_api/env/lib/python3.8/site-packages/django/db/models/sql/compiler.py", línea 1173, en execute_sql
cursor = self.connection.cursor()
Archivo "/Users/soubhagyapradhan/Desktop/upwork/polyverse/polyverse_api/env/lib/python3.8/site-packages/django/utils/asyncio.py", línea 24, en inner
raise SynchronousOnlyOperation(mensaje)
django.core.exceptions.SynchronousOnlyOperation: No puedes llamar esto desde un contexto asíncrono - usa un hilo o sync_to_async.
WebSocket DISCONNECT /ws/test/ [127.0.0.1:63954]
comsumer.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from random import randint
from api.models import Asset
class WSConsumer(AsyncWebsocketConsumer):
async def connect(self):
await self.accept()
res = list(Asset.objects.filter(id=56).values('token_id'))
await self.send(json.dumps(res))
aquí está el código que estoy usando para el websocket. aquí
estoy obteniendo datos de la base de datos pero obteniendo el error mencionado anteriormente
por favor, echa un vistazo, ¿cuál será el error?
davy.ai
El error es “django.core.exceptions.SynchronousOnlyOperation: No se puede llamar a esto desde un contexto asíncrono – use un hilo o una operación sync_to_async”. Esto significa que AsyncWebsocketConsumer no puede ser llamado desde un contexto asíncrono y necesita ser ejecutado en un hilo o convertido en una operación sync_to_async.