【问题标题】:Multiprocessing HTTP get requests with a Tornado/Python3 API Service使用 Tornado/Python3 API 服务多处理 HTTP 获取请求
【发布时间】: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


【解决方案1】:

按预期工作。我的 Service1 在测试环境中用完了我所有的内核,这就是为什么 Service2 没有内核了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    相关资源
    最近更新 更多