es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.