加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Python3 Tornado 如何开启多进程模式

发布时间:2021-05-21 04:53:21 所属栏目:大数据 来源: https://blog.csdn.net/yilovex
导读:先来看一个 Tornado 示例: #!/usr/bin/env python3# -*- coding: UTF-8 -*-from tornado.ioloop import IOLoop as Runfrom tornado.web import RequestHandler,Applicationclass MainHandler(RequestHandler): def get(self): self.write("hello worldn")a

先来看一个 Tornado 示例:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from tornado.ioloop import IOLoop as Run
from tornado.web import RequestHandler,Application

class MainHandler(RequestHandler):
     def get(self):
         self.write("hello worldn")

app = Application([(r"/",MainHandler)],debug=False)

if __name__ == '__main__':
	app.listen(8000)
    Run.instance().start()

这是一个极简的 Tornado 应用,在命令行启动后就可以通过 API 进行访问了。但是,这是一个单进程的应用,同一时刻只能有一个应用访问,其他应用如果访问就需要进行排队,等到第一个任务结束后才可以进行后续的访问

如果再开发环境中那也无所谓,但是如果在生产环境中就会有影响。那么 Tornado 有没有可以开启多进程的方法呢?

有!我们可以通过部署 Tornado 的时候进行多个端口启动,然后使用 Supervisor 管理 Tornado 的进程,再通过 Nginx 负载均衡到各个 Tornado 应用上

当然,在单个 Tornado 应用中开启多进程也是可以的

需要引入 tornado.httpserver 下的 HTTPServer

from tornado.httpserver import HTTPServer

if __name__ == '__main__':

    # 单进程启动
    # app.listen(8000)
    # Run.instance().start()

    # 多进程启动
    server = HTTPServer(app)
    server.bind(8000)
    server.start(num_processes=None)
    Run.instance().start()

num_processes=None 代表开启对应机器的 cpu 核数的进程,num_processes=2 就代表开启两个进程

在使用多进程启动的时候,需要关掉 debug 模式

settings = {'debug' : False}

参考文章:
https://www.jb51.net/article/53213.htm
https://blog.csdn.net/wanghui_gytj/article/details/75448877
https://www.jianshu.com/p/41de38591e19

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读