Python未来:如何从Tornado中的未来对象获取json?
这是一个Python未来:如何从Tornado中的未来对象获取json?,python,tornado,python-3.4,concurrent.futures,motorengine,Python,Tornado,Python 3.4,Concurrent.futures,Motorengine,这是一个post处理程序: handler.py from imports import logic @gen.coroutine def post(self): data = self.request.body.decode('utf-8') params = json.loads(data) model_id= params['model_id'] logic.begin(model_id) class Logic(object): def __i
post
处理程序:
handler.py
from imports import logic
@gen.coroutine
def post(self):
data = self.request.body.decode('utf-8')
params = json.loads(data)
model_id= params['model_id']
logic.begin(model_id)
class Logic(object):
def __init__(self, persist):
self._persist = persist
def begin(self, model_id):
model = self._persist.get_model(model_id)
print ("Model from persist : ")
print (model)
logic
对象是从imports.py导入的,它是从导入的类logic
imports.py:
import Models
import Logic
class Persist(object):
def getModel(self, model_id):
model = Models.findByModelId(model_id)
return model
persist = Persist()
logic = Logic(persist)
logic.py
from imports import logic
@gen.coroutine
def post(self):
data = self.request.body.decode('utf-8')
params = json.loads(data)
model_id= params['model_id']
logic.begin(model_id)
class Logic(object):
def __init__(self, persist):
self._persist = persist
def begin(self, model_id):
model = self._persist.get_model(model_id)
print ("Model from persist : ")
print (model)
get\u model
方法使用Models
进行DB查询并返回未来对象:
model.py:
from motorengine.document import Document
class Models(Document):
name = StringField(required=True)
def findByModelId(model_id):
return Models.objects.filter(_id=ObjectId(model_id)).find_all()
这将在控制台中打印将来的对象:
<tornado.concurrent.Future object at 0x7fbb147047b8>
如何将其转换为json 要将
未来
解析为实际值,在协同程序中产生它:
@gen.coroutine
def begin(self, model_id):
model = yield self._persist.get_model(model_id)
print ("Model from persist : ")
print (model)
调用协同路由的任何函数都必须是协同路由,并且它必须产生
协同路由的返回值才能获得其返回值:
@gen.coroutine
def post(self):
data = self.request.body.decode('utf-8')
params = json.loads(data)
model_id = params['model_id']
model = yield logic.begin(model_id)
print(model)
更高级的编码模式不需要遵循这些规则,但首先要遵循这些基本规则
有关从协程调用协程的更多信息,请参阅。要将未来
解析为实际值,在协程中生成它:
@gen.coroutine
def begin(self, model_id):
model = yield self._persist.get_model(model_id)
print ("Model from persist : ")
print (model)
调用协同路由的任何函数都必须是协同路由,并且它必须产生
协同路由的返回值才能获得其返回值:
@gen.coroutine
def post(self):
data = self.request.body.decode('utf-8')
params = json.loads(data)
model_id = params['model_id']
model = yield logic.begin(model_id)
print(model)
更高级的编码模式不需要遵循这些规则,但首先要遵循这些基本规则
有关从协同路由调用协同路由的更多信息,请参阅