从Tornado向客户端发送JSON
我收到了客户发来的数据,并处理完了这些数据,现在想把结果以JSON格式发送回去,但客户没有收到。我的代码是:
def do_find_one(self,live):
Info = {}
isAvailable = str
count=db.userInfo.find( {'Username': live}).count()
if count > 0:
isAvailable = False
Info['valid']=isAvailable
print False, count
print Info
else:
isAvailable = True
print True, count
self.write(json.dumps(Info, default=json_util.default))
class CheckerHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def post(self):
pi1 = self.get_argument('display')
do_find_one(self,pi1)
请问self.write(json.dumps(Info, default=json_util.default))
这行代码有问题吗?
1 个回答
8
当你使用 tornado.web.asynchronous
这个装饰器时,你需要在处理完请求后调用 self.finish()
,这样才能把响应发送给客户端:
class CheckerHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def post(self):
pi1 = self.get_argument('display')
do_find_one(self,pi1)
self.finish() # Without this the client's request will hang
def do_find_one(self,live):
Info = {}
isAvailable = str
count=db.userInfo.find( {'Username': live}).count()
if count > 0:
isAvailable = False
Info['valid']=isAvailable
print False, count
print Info
else:
isAvailable = True
print True, count
self.write(json.dumps(Info, default=json_util.default))