如何开启Tornado的调试模式方便调试与测试 Supervisord进程管理工具的安装使用用supervisord管理Tornado进程

默认用 Tornado 写程序,修改完代码需要将文件上传,然后重启 Supervisord (supervisorctl reload),修改的程序才能生效。但这样比较麻烦,因为需要SSH到服务器进行重启操作。Tornado 自带的调试模式可以让我们轻松不少。

开启调试模式也很简单,只需要 import 一个模块即可。

1 import tornado.autoreload

现在将修改的文件上传之后,不需要再重启,修改的结果就会显示出来了。

另外也可以在 settings 加入 debug选项:

01 import tornado.httpserver
02 import tornado.ioloop
03 import tornado.options
04 import tornado.web
05  
06 settings = {'debug' True}
07  
08 define("debug",default=True,help="Debug Mode",type=bool)
09  
10 def main():
11     tornado.options.parse_command_line()
12     application = tornado.web.Application([
13         (r"/", MainHandler),
14         (r"/nowamagic/", NowaMagicHandler),
15     ],**settings)
16     http_server = tornado.httpserver.HTTPServer(application)
17     http_server.listen(options.port)
18     tornado.ioloop.IOLoop.instance().start()

Tornado 官方教程上的 settings 是这样的:

01 settings = {
02     "cookie_secret""61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
03     "login_url""/login",
04     "xsrf_cookies"True,
05 }
06  
07 application = tornado.web.Application([
08     (r"/", MainHandler),
09     (r"/login", LoginHandler),
10 ], **settings)

当然也设置settings字典可以这样:

1 settings = dict(
2     cookie_secret= "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
3     login_url= "/login",
4     xsrf_cookies= True,
5 )

settings可以设置什么?

01 #设置templates路径:
02 template_path = os.path.join(os.path.dirname(__file__), "templates")
03  
04 #设置静态文件解析路径:
05 static_path = os.path.join(os.path.dirname(__file__), "static"),
06  
07 #设置防跨站请求攻击:
08 xsrf_cookies = True,
09 #默认为False,即不可防御。
10  
11 #设置登陆路径,未登陆用户在操作时跳转会用到这个参数:
12 login_url = "/login-do",
13 #默认为@tornado.web.authenticated
14  
15 #设置调试模式:
16 debug = True,
17 #默认为False,即不是调试模式。
18  
19 #设置cookie密钥:
20 cookie_secret = "dskfhisdjklagkfdklag;lkjasdklgjkldsjaklgjkldsfksdklf"
21 #默认为字符串"secure cookies"
22  
23 #设置是否自动编码:在2.0以上需要设置此项来兼容您之前的APP
24 autoescape = None,
25 #不设置默认为自动编码。
26  
27 #设置template_loader,可以从独立的路径中导入template:
28 template_loader=utils.ZipLoader,
29 #其中utils为自己定义的模块,ZipLoader是tornado.template.BaseLoader的子类。
30  
31 #设置gzip压缩:
32 gzip=True
33  
34 #设置静态路径头部:
35 static_url_prefix = "/mystatic/",
36 #默认是"/static/"
37  
38 #设置静态文件处理类:
39 static_handler_class = MyStaticFileHandler,
40 #默认是tornado.web.StaticFileHandler
41  
42 #设置静态文件的参数:
43 static_handler_args = "key1":"value1""key2":"value2"  }
44 #默认为空字典。
45  
46 #设置日志处理函数
47 log_function = your_fun,
48 # 日志处理函数your_fun,按照自己的意图记录日志。

调试模式的缺点是:只感知.py文件的改变,模版的改变不会加载,有些特殊的错误,比如import的错误,就会直接让服务下线,到时候还得手动重启。还有就是调试模式和 HTTPServer 的多进程模式不兼容。在调试模式下,你必须将 HTTPServer.start 的参数设为不大于 1 的数字。

Supervisord进程管理工具的安装使用

用supervisord管理Tornado进程

 

先来介绍 supervisord。Supervisor 是一个进程监控程序。满足的需求是:我现在有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了 Supervisor

1. 安装

安装很简单:

1 pip install supervisor

就这样就完成了安装,在 /root/nowamagic_venv/lib/python2.7/site-packages/ 文件夹下发现了安装目录,我这里是在 virtualenv 下安装的。

2. 配置

可以用以下命令生成配置文件:

1 echo_supervisord_conf > etc/supervisord.conf

配置文件生成之后,在最末尾加上这几行东西:

1 [program:hello]
2 command=python /root/nmapp2_venv/test.py --port=8888
3 directory=/root/nmapp2_venv/
4 autorestart=true
5 redirect_stderr=true

OK,完成配置。

3. 启动 supervisor

启动 supervisor:

1 supervisord

如果报错,请检查报错信息,比如:

1 Error: No config file found at default paths (
2 /root/nmapp2_venv/etc/supervisord.conf,
3 /root/nmapp2_venv/supervisord.conf,
4 supervisord.conf,
5 etc/supervisord.conf,
6 /etc/supervisord.conf); use the -c option to specify a config file at a different path
7 For help, use /root/nmapp2_venv/bin/supervisord -h

在上面的默认目录中,丢一个 supervisord.conf 即可。

如果报 http://localhost:9001 refused connection 错误,那是因为 supervisord 没有启动的原因。只要放好 supervisord.conf 文件,即可解决问题。

supervisorctl start all 开启全部服务。

如果修改了配置文件,supervisorctl reload 重启。修改了 Supervisor 的配置,也可以用 supervisorctl reread 来重新载入,或用 supervisorctl reload 来载入新配置并重启所有子进程。直接运行 supervisorctl 的话,可以进入命令行模式操作。

posted @ 2016-10-25 11:46  众里寻,阑珊处  阅读(824)  评论(0编辑  收藏  举报
返回顶部