我用龙卷风和马达开始了一个小项目, 如果我想拥有一个非阻塞的访问,我对如何处理访问数据层感到困惑
通常我用这个结构来分隔我的项目
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
一般来说,无论何时使用
yield
,都是在执行异步/非阻塞操作。因此,在本例中,除了UsersDao.get
上缺少的@gen.coroutine
修饰符外,您发布的代码看起来是正确的(每当您对异步内容使用yield
时,您需要这个修饰符,并且您需要在任何时候调用它)。你知道吗相关问题 更多 >
编程相关推荐