Python3 Tornado 如何开启多进程模式

本文介绍如何在Tornado应用中实现多进程部署,包括通过HTTPServer开启多进程、关闭debug模式,以及使用Supervisor和Nginx进行进程管理和负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来看一个 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 world\n")

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.youkuaiyun.com/wanghui_gytj/article/details/75448877
https://www.jianshu.com/p/41de38591e19

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值