【发布时间】:2021-05-12 15:52:17
【问题描述】:
我构建了两个不同的 Tornado/Python3 API 服务。
Service1 打开几个不同的线程,半并行向Service2 发送GET 请求。 但是,Service2 (Tornado/Python3) 随后会继续按顺序处理 GET 请求。
Service2的代码示例:
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Some Microservice v1")
def make_app():
return tornado.web.Application([
(r"/v1", MainHandler),
(r"/v1/addfile", AddHandler, dict(filepaths = filepaths)),
(r"/v1/getfiles", GetHandler, dict(filepaths = filepaths)),
(r"/v1/getfile", GetFileHandler, dict(filepaths = filepaths)),
])
if __name__ == "__main__":
app = make_app()
app.listen(8887, address='127.0.0.1')
tornado.ioloop.IOLoop.current().start()
我曾尝试手动 fork 进程,以获得更好的性能,但这没有奏效。
if __name__ == "__main__":
#app = make_app()
#app.listen(8887, address='127.0.0.1')
#tornado.ioloop.IOLoop.current().start()
sockets = tornado.netutil.bind_sockets(8887)
tornado.process.fork_processes(8)
server = tornado.httpserver.HTTPServer(app)
server.add_sockets(sockets)
tornado.ioloop.IOLoop.instance().start()
我在这里缺少什么?我真的需要进入每个 Handler 类并定义协程和回调吗?
非常感谢您,
谢谢。
【问题讨论】:
标签: python-3.x parallel-processing tornado