我正在尝试编写一个Python Tornado服务器的发布请求,该服务器在将响应发送回客户端之前会休眠一秒钟。服务器必须每分钟处理许多这些发布请求。由于BadYieldError: yielded unknown object <generator object get at 0x10d0b8870>
@asynchronous
def post(self):
response = yield IOLoop.instance().add_timeout(time.time() + 1, self._process)
self.write(response)
self.finish()
@gen.coroutine
def _process(self, callback=None):
callback("{}")
服务器将接收发布请求,等待一秒,然后返回结果而不阻止其他请求。这是Python 2.7。怎么解决这个?谢谢!
答案 0 :(得分:1)
使用回调或&#34;产生&#34;,而不是两者。所以你可以这样做:
@asynchronous
def post(self):
IOLoop.instance().add_timeout(time.time() + 1, self._process)
def _process(self):
self.write("{}")
self.finish()
或者,更好:
@gen.coroutine
def post(self):
yield gen.sleep(1)
self.write("{}")
# Tornado calls self.finish when coroutine exits.