在 Django 通道中执行数据库查询
Perform database query in Django channels
我正在尝试创建一个非常简单的系统,用户为了使用消费者,需要在 WS url 中输入一个密钥,例如:ws://127.0.0.1:8000/main?key=KEY
。一旦消费者被调用,Django Channels 需要执行一个非常简单的数据库查询来检查键是否存在:
class TestConsumer(AsyncJsonWebsocketConsumer):
async def websocket_connect(self, event):
...
key_query = await database_sync_to_async(keys.objects.get(key=key))
...
但是这段代码的问题在于它会给出以下错误:
You cannot call this from an async context - use a thread or sync_to_async.
有什么办法可以实现吗?任何建议表示赞赏!
database_sync_to_async
必须在方法上调用,而不是在方法的结果上调用:
key_query = await database_sync_to_async(keys.objects.get)(key=key)
我正在尝试创建一个非常简单的系统,用户为了使用消费者,需要在 WS url 中输入一个密钥,例如:ws://127.0.0.1:8000/main?key=KEY
。一旦消费者被调用,Django Channels 需要执行一个非常简单的数据库查询来检查键是否存在:
class TestConsumer(AsyncJsonWebsocketConsumer):
async def websocket_connect(self, event):
...
key_query = await database_sync_to_async(keys.objects.get(key=key))
...
但是这段代码的问题在于它会给出以下错误:
You cannot call this from an async context - use a thread or sync_to_async.
有什么办法可以实现吗?任何建议表示赞赏!
database_sync_to_async
必须在方法上调用,而不是在方法的结果上调用:
key_query = await database_sync_to_async(keys.objects.get)(key=key)