问题:我为模型设置了基于tonardo的Web服务。随着请求并发性的增加,网络将很容易关闭。
我尝试过的方法:我已经尝试阅读一些相关的代码,例如龙卷风中的异步框架,但是我无法获得有效的想法。
Web服务代码如下:
class mainhandler(tornado.web.RequestHandler):
def get(self):
self.write('hello')
def post(self):
in_data = json.loads(self.request.body.decode('utf-8'))
res = predict(in_data)
def set_default_headers(self):
self.set_header('content_type', 'application/json;charset=utf-8')
application = tornado.web.Application([(r'/', mainhandler)])
if __name__ == "__main__":
application.listen(port=5000)
tornado.ioloop.IOloop.current().start()
答案 0 :(得分:0)
在龙卷风中,任何慢速的操作都必须在await
的协程中调用。如果predict
自己执行某些I / O,则应将其制作为协程,以便可以异步执行该I / O。如果它是纯计算,则应在线程池上运行它:
async def post(self):
in_data = json.loads(self.request.body.decode('utf-8'))
res = await IOLoop.current().run_in_executor(None, predict, in_data)