我正在编写一个 Tornado Rest API,并且我正在使用 mongoengine 作为 ODM。我想让事情尽可能地解耦。我不希望我的代码在处理程序中的原因是我想让一些函数异步。
这是最好的方法吗?:(只是伪代码)
class UserSearchHandler(BaseHandler):
@tornado.web.asynchronous
@gen.coroutine
def get(self):
q = self.get_argument("query",strip=True)
results = yield gen.Task(Node.search,q)
self.write(results)
Mongoengine 内部
class User(Docuement):
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
@async
def search(q,callback=None):
if callback != None:
return callback(User.objects(..magic))
return User.objects(....)
...return some search query as json
将成员函数添加到 ODM 是否有意义?