我正在集成异步功能的django通道。我试图在函数上使用await来获取一个用户模型的多个对象。
consumers.py
class TeamConsumer(AsyncConsumer):
async def websocket_connect(self, event):
await self.send({
"type":"websocket.accept"
})
async def websocket_receive(self, event):
o_user = await self.users()
print(o_user)
@database_sync_to_async
def users(self):
return UserModel.objects.all()尝试从上面的代码中获取用户会导致错误“您不能从异步上下文中调用它-使用线程或sync_to_async”。
但是,如果我使用"UserModel.objects.all().first()“获取单个对象,则一切正常。
发布于 2020-03-30 18:48:04
我认为这是因为queryset是懒惰的。调用UserModel.objects.all()实际上并不执行查询。当您打印查询时,将执行查询。尝试在users()方法中将其转换为列表。
https://stackoverflow.com/questions/60912945
复制相似问题