如何正确使用电动机在单独的数据存取层中

2024-09-30 02:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我用龙卷风和马达开始了一个小项目, 如果我想拥有一个非阻塞的访问,我对如何处理访问数据层感到困惑

通常我用这个结构来分隔我的项目

root_project
-logic
-data
--UsersDao
-handlers
--Users
-main.py

但我不知道如果我这样做连接将是非阻塞的

    @gen.coroutine
    @tornado.web.asynchronous
    def get(self, id):
       users = self.settings["User"]
       result = yield from users.get(id)
       self.write(json_encode(result))
       self.finish()

'users'是我的UsersDao对象

class UsersDao(object):
    ....
def get(self, user, callback=None):
    try:
        user = yield self._db["users"].find_one({'_id': user})
        ...create user object
        return user
    except ValueError:
        pass
    except OperationFailure:
        pass
    except Exception:
        raise

Tags: 数据项目selfidgetobjectdefpass
1条回答
网友
1楼 · 发布于 2024-09-30 02:35:27

一般来说,无论何时使用yield,都是在执行异步/非阻塞操作。因此,在本例中,除了UsersDao.get上缺少的@gen.coroutine修饰符外,您发布的代码看起来是正确的(每当您对异步内容使用yield时,您需要这个修饰符,并且您需要在任何时候调用它)。你知道吗

相关问题 更多 >

    热门问题