我正在编写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是否有意义?