tornado 多进程模式解析

yipeiwu_com7年前Python基础

本文主要研究的是tornado 多进程模式的相关内容,具体如下。

官方文档的helloworld实例中的启动方法:

if __name__ == "__main__":

application.listen(8888) # listen is a shortcut for bind and start ,这点看httpserver.py可以得知

 tornado.ioloop.IOLoop.instance().start()

并且在listen中,将tornado启动为单进程模型。

所以要启动为多进程模型的方法为:摒弃listen方法

http_server = tornado.httpserver.HTTPServer(application)

  http_server.bind(options.port, options.host)

  http_server.start(num_processes=0) # tornado将按照cpu核数来fork进程

  tornado.ioloop.IOLoop.instance().start()

需要注意的一点是,要关掉debug模式,否则:

[E 110521 11:26:53 httpserver:229] Cannot run in multiple processes: IOLoop instance has already been initialized. You cannot call IOLoop.instance() before calling start()

原因是,autoreload.py已经在http_server.start()之前就初始化了IOLoop,这个在httpserver.py中的class HTTPServer()和def start()的doc string中已经解释了。

总结

以上就是本文关于tornado 多进程模式解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

如何为Python终端提供持久性历史记录

问题 有没有办法告诉交互式Python shell在会话之间保留其执行命令的历史记录? 当会话正在运行时,在执行命令之后,我可以向上箭头并访问所述命令,我只是想知道是否有某种方法可以保存...

Python开启线程,在函数中开线程的实例

逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysq...

Python实现去除列表中重复元素的方法小结【4种方法】

Python实现去除列表中重复元素的方法小结【4种方法】

本文实例讲述了Python实现去除列表中重复元素的方法。分享给大家供大家参考,具体如下: 这里一共使用了四种方法来去除列表中的重复元素,下面是具体实现: #!usr/bin/env...

解决python通过cx_Oracle模块连接Oracle乱码的问题

用python连接Oracle是总是乱码,最有可能的是oracle客户端的字符编码设置不对。 本人是在进行数据插入的时候总是报关键字"From"不存在,打印插入的Sql在pl/sql中进...

使用Python获取并处理IP的类型及格式方法

公网与私有网络的判断其实十分简单,只要记住私有网络的三个网段。不过,对于记性不好的人或者学识不是很高的机器来说,有一种判断方法还是有必要的。 写如下脚本: from IPy imp...