运行代码时出现错误
错误:tornado.application:从未检索到未来异常:Traceback(最近一次调用最后一次): 文件“C:\ Users \ Ben \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tornado \ gen.py”,第1069行,在运行中 yielded = self.gen.send(value) 文件“C:\ Users \ Ben \ Documents \ GitHub \ app-development \ server \ server.py”,第20行,在服务中 self.write(r)的 文件“C:\ Users \ Ben \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ tornado \ web.py”,第708行,写入 引发RuntimeError(“在finish()之后无法写()”) RuntimeError:在finish()
之后无法写入()
为什么会这样?我引用了这个question(第二个答案) 我相信我正在使用yield语句。
class MainHandler(tornado.web.RequestHandler):
executor = ThreadPoolExecutor(max_workers=64)
def get(self):
task = self.get_argument('task')
self.serve(task)
@tornado.gen.coroutine
def serve(self, task):
method = getattr(self, task)
r = yield method()
self.write(r)
@run_on_executor
def announcements(self):
time.sleep(5)
print("Done")
with open('announcements.json') as announce_data:
data = json.load(announce_data)
print(data)
return data
答案 0 :(得分:1)
get
也必须是协程:
@gen.coroutine
def get(self):
task = self.get_argument('task')
yield self.serve(task)
在龙卷风中,只有协同程序可以调用协同程序。