use*_*608 0 python tornado multiprocessing web server
我有一个Web应用程序,当一个用户使用时运行正常,但随着越来越多的客户端开始使用它,它是无法忍受的缓慢.服务器端是用python编写的,并使用龙卷风.我注意到,虽然它运行的服务器有4个内核,但只有1个正在使用,所以我开始关注python的多处理.我已经看到了以下基本示例:http://sebastianraschka.com/Articles/2014_multiprocessing_intro.html和龙卷风处理器来自:http: //tornado.readthedocs.org/en/latest/_modules/tornado/process.html(这似乎有点复杂),但我仍然不确定这是我正在寻找的.如果有50个用户一次查看它,那么使用4个处理器运行此代码会加快速度吗?如果是这样的选项之一,那么在使用龙卷风Web服务器时可以采用哪种方式?
对于模糊和写得不好的问题感到抱歉 - 即使经过广泛的研究,我对多处理的缺乏经验也应归咎于此.如果任何示例代码有助于回答此问题,请告诉我们.
谢谢!
vit*_*liy 10
您可以使用以下代码运行多个龙卷风工作者:
import tornado.web
import tornado.httpserver
import tornado.ioloop
class MyHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
        self.write('OK')
        self.finish()
if __name__=='__main__':
    app = tornado.web.Application([(r'/', MyHandler)])
    server = tornado.httpserver.HTTPServer(app)
    server.bind(8888)
    server.start(4) # Specify number of subprocesses
    tornado.ioloop.IOLoop.current().start()
虽然你的应用甚至在一个核心上为50个用户提供服务也很奇怪.你有一些繁重的计算,或者你使用任何阻止库?
确保在处理程序方法中使用@tornado.web.asynchronous或@tornado.gen.coroutine装饰器,否则您只是同步运行代码.
更新:为了在单独的过程中完成繁重的工作,您可以使用concurrent.futures.ProcessPoolExecutor.看看这个答案:https://stackoverflow.com/a/25208213/1525432.