首页 > 解决方案 > Django 从 sync_to_async 数据库调用中读取数据

问题描述

我正在尝试在异步函数中读取一些我需要从数据库中获取的数据。所以我用频道 sync_to_async 函数包装它。现在的问题是如何访问从数据库中检索到的实际数据?目前它只是这样输出:<channels.db.DatabaseSyncToAsync object at 0x7f7b672ea6d0>

代码:

from ...models import admin_list
from channels.db import database_sync_to_async

def get_admins():
    return admin_list.objects.values('name')

    @bot.event
    async def on_message(message):
        admin_names = database_sync_to_async(get_admins)
        print(admin_names)

标签: djangodjango-channels

解决方案


database_sync_to_async返回 a awaitable,您必须等待它。

from ...models import admin_list
from channels.db import database_sync_to_async

@database_sync_to_async
def get_admins():
    return admin_list.objects.values('name')

@bot.event
async def on_message(message):
    admin_names = await get_admins()
    print(admin_names)

推荐阅读