Tornado 代码说明

 1 class FaultyInfoHandler(tornado.web.RequestHandler):
 2     def get(self):
 3         import xmlrpc.client
 4         s = xmlrpc.client.ServerProxy(LocalRpcSvcAddr)
 5         info = s.faultyinfo()
 6         self.render("faultyinfo.htm", lists=info)
 7
 8     def post(self):
 9         import xmlrpc.client
10         s = xmlrpc.client.ServerProxy(LocalRpcSvcAddr)
11         event_id = self.get_argument(‘event_id‘, ‘‘)
12         if event_id :
13             evid = event_id.split()
14             num_evid = len(evid)
15             for i in range(num_evid):
16                 t = s.faultyrepair(evid[i])
17                 if t[0] == 0:
18                     flag = True
19                 else:
20                     flag = False
21                     message = ‘操作失败‘ + ‘:‘ + t[1]
22                     break
23             if flag:
24                 message = ‘操作成功!‘
25             self.write("<script language=javascript> alert(‘%s‘);</script>" % message)
26         info = s.faultyinfo()
27         info_num = len(info)
28         if info_num > 0:
29             self.write(‘<META HTTP-EQUIV=REFRESH CONTENT=0;‘
30                     ‘URL=/View/faultyinfo>‘)
31         else:
32             self.write("<script language=javascript> top.location=‘/‘;"
33             "</script>")

(r"/View/faultyinfo", FaultyInfoHandler)  #打开/View/faultyinfo页面,执行FaultyInfoHandler

分析:

1.class FaultyInfoHandler(tornado.web.RequestHandler):

--FaultyInfoHandler继承tornado.web.RequestHandler

2.def get(self):

--self 指的是FaultyInfoHandler(PS:我是这么认为的,有待确认)

 def get(self) 指重新定义get方法,像get、post这类方法原本在tornado.web.RequestHandler是存在的,这里是重定义

self.render("faultyinfo.htm", lists=info) 中render方法在FaultyInfoHandler没有重定义,所以用的是继承于tornado.web.RequestHandler定义的render方法

3.def post(self):

--重新定义post方法,加载页面时,默认调用的是FaultyInfoHandler中的get方法,在htm中采用form表单指定post方法时才会调用post方法,htm中使用如下面代码所示:

  1 <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
  2 <head><title></title>
  3 <link href="/css/base.css" type="text/css" rel="stylesheet">
  4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5 <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  6 <META HTTP-EQUIV="Cache-Control" content="no-cache">
  7 </head>
  8
  9 <script language=javascript>
 10 function IdentifyRepair(event_id)
 11 {
 12     var form_info = document.getElementById("form_info");
 13     form_info.method = "post";
 14     form_info.action = "/View/faultyinfo?event_id=" + event_id;
 15     form_info.submit();
 16 }
 17
 18 function GetEventId()
 19 {
 20     var form_info = document.getElementById("form_info");
 21     var evid_list = document.getElementsByName("evid_list");
 22     var evid_info = "";
 23     for(var j=0; j<evid_list.length; j++)
 24     {
 25         evid_info += evid_list[j].value + " ";
 26     }
 27
 28     form_info.method = "post";
 29     form_info.action = "/View/faultyinfo?event_id=" + evid_info;
 30     form_info.submit();
 31 }
 32 </script>
 33
 34 <body>
 35
 36 <table class=title width=700>
 37     <tr>
 38         <td><b>故障信息</b></td>
 39         <td style="font-size:12px;color:#185A73" align=right width=*>{% module Uptime() %}</td>
 40     </tr>
 41 </table>
 42
 43 <br>
 44 {% if lists != [] %}
 45     <input type="button" onclick="GetEventId()" value="修复全部">
 46 {% end %}
 47 <br>
 48 {% for d in lists %}
 49 <form id="form_info" name="form_info">
 50 <table width=900 border=0 cellspacing=1 cellpadding=1>
 51     <tr id=tblhdr height=22>
 52         <td width=200 align=center>TIME</td>
 53         <td width=300 align=center>EVENT_ID</td>
 54         <td width=150 align=center>MSG_ID</td>
 55         <td width=150 align=center>SEVERITY</td>
 56         <td align=center>
 57             {% if d[‘event_id‘] %}
 58                 <a style="color:#0000ff"
 59                 href="javascript:IdentifyRepair(‘{{d[‘event_id‘]}}‘)">修复</a>
 60             {% end %}
 61         </td>
 62     </tr>
 63
 64     <tr id=row0>
 65         <td align=center>{{ d[‘time‘] }}</td>
 66         <td align=center>{{ d[‘event_id‘] }}</td>
 67         <td align=center>{{ d[‘msg_id‘] }}</td>
 68         <td align=center>{{ d[‘severity‘] }}</td>
 69         <input name="evid_list" type="hidden" value={{ d[‘event_id‘] }} />
 70
 71     </tr>
 72     <tr>
 73     <table width=900 >
 74         <tr id=row1>
 75             <td width=20 ></td>
 76             <td width=100 align=left>Product_sn</td>
 77             <td width=780 align=left>{{ d[‘product_sn‘] }}</td>
 78         </tr>
 79         <tr id=row1>
 80             <td width=20 ></td>
 81             <td width=100 align=left >Fault class</td>
 82             <td width=780 align=left>{{ d[‘faulty_class‘] }}</td>
 83         </tr>
 84         <tr id=row1>
 85             <td width=20 ></td>
 86             <td width=100 align=left>Affects</td>
 87             <td width=780 align=left>{{ d[‘affects‘] }}</td>
 88         </tr>
 89         <tr id=row1>
 90             <td width=20 ></td>
 91             <td width=100 align=left>Problem in</td>
 92             <td width=780 align=left>{{ d[‘problem_in‘] }}</td>
 93         </tr>
 94         <tr id=row1>
 95             <td width=20 ></td>
 96             <td width=100 align=left>FRU</td>
 97             <td width=780 align=left>{{ d[‘fru‘] }}</td>
 98         </tr>
 99         <tr id=row1>
100             <td width=20 ></td>
101             <td width=100 align=left>Serial ID</td>
102             <td width=780 align=left>{{ d[‘serial_id‘] }}</td>
103         </tr>
104         <tr id=row1>
105             <td width=20 ></td>
106             <td width=100 align=left>Description</td>
107             <td width=780 align=left>{{ d[‘description‘] }}</td>
108         </tr>
109         <tr id=row1>
110             <td width=20 ></td>
111             <td width=100 align=left>Response</td>
112             <td width=780 align=left>{{ d[‘response‘] }}</td>
113         </tr>
114         <tr id=row1>
115             <td width=20 ></td>
116             <td width=100 align=left>Impact</td>
117             <td width=780 align=left>{{ d[‘impact‘] }}</td>
118         </tr>
119         <tr id=row1>
120             <td width=20 ></td>
121             <td width=100 align=left>Action</td>
122             <td width=780 align=left>{{ d[‘action‘] }}</td>
123         </tr>
124     </table>
125     </tr>
126 </table>
127 </form>
128 <br>
129 {% end %}
130 </body>
131 </html>

通过表单的方法:form_info.method  form_info.action  form_info.submit

4.self.write(‘<META HTTP-EQUIV=REFRESH CONTENT=0;URL=/View/faultyinfo>‘)

--重新加载/View/faultyinfo页面

5.self.write("<script language=javascript> top.location=‘/‘;</script>")

--重新加载整个页面(缺少说明!!!)

Tornado 代码说明

时间: 2024-10-15 09:17:07

Tornado 代码说明的相关文章

Tornado代码分析

转自:http://blog.csdn.net/goldlevi/article/details/7047726 Tornado 采用多进程 + 非阻塞 + epoll的模型,可以提供比较强大的网络响应性能.在我们的项目中,单个实例的灰度发布server就可以支持每秒1500次的请求响应.而通过 Nginx与tornado一起部署,可以同时支持多个实例的运行,从而支持加倍的请求响应,满足当前旺旺用户的升级需求.下图是旺旺灰度发布的架构图: 现在把Tornado里面的部分内容,以及一些重要的资料分

Nginx + tornado + supervisor部署

参考链接:supervisor + Tornado + Nginx 使用详解, 用tornado ,Supervisord ,nginx架网站, tornado官方文档 项目文档树: . ├── chnservices │   └── channels.py ├── etc │   ├── chnservices.conf │   ├── nginx │   │   └── nginx.conf │   ├── supervisord.conf │   └── supervisord.conf.

Celery,Tornado,Supervisor构建和谐的分布式系统

Celery 分布式的任务队列 与rabbitmq消息队列的区别与联系: rabbitmq 调度的是消息,而Celery调度的是任务. Celery调度任务时,需要传递参数信息,传输载体可以选择rabbitmq. 利用rabbitmq的持久化和ack特性,Celery可以保证任务的可靠性. 优点: 轻松构建分布式的Service Provider. 高可扩展性,增加worker也就是增加了队列的consumer. 可靠性,利用消息队列的durable和ack,可以尽可能降低消息丢失的概率,当wo

tornado+bootstrap急速搭建你自己的网站

bootstrap既然是这么的流行又能省很多的事为什么不用他呢?再加上牛X的produced by FB的tornado简直如虎添翼了! 1. 安装配置 安装所需要的库等内容.这里没什么需要多讲的.tornado直接用easy_install或者pip.bootstrap直接下下来就OK了.当然还需要下载bootstrap依赖的jquery.依次下载安装就可以. 2. 目录结构 把bootstrap目录下得内容分别都放在static目录下得css.fonts和js中.jquery对应的js也放在

Python Web 框架:Tornado

1.Tornado Tornado:python编写的web服务器兼web应用框架 1.1.Tornado的优势 轻量级web框架 异步非阻塞IO处理方式 出色的抗负载能力 优异的处理性能,不依赖多进程/多线程,一定程度上解决C10K问题 WSGI全栈替代产品,推荐同时使用其web框架和HTTP服务器 1.2.Tornado VS Django Django:重量级web框架,功能大而全,注重高效开发 内置管理后台 内置封装完善的ORM操作 session功能 后台管理 缺陷:高耦合 Torna

Tornado——hello,world!

我们先来看一个经典的Tornado代码 # coding:utf-8 import tornado.web import tornado.ioloop import tornado.httpserver import tornado.options class IndexHandler(tornado.web.RequestHandler): def get(self): self.write("hello,world!") if __name__ == "__main__&

tornado初级篇

一:tornado代码初始化,入门基础 创建python文件包 #!/usr/bin/env python # -*- coding:utf-8 -*- import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") application = tornado.web.Application(

全栈必备 网络编程基础

我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界. 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至无法描述. 对于一个码农而言,了解网络的基础知识可能还是从了解定义开始,认识OSI的七层协议模型,深入Socket内部,进而熟练地进行网络编程. 关于网络 关于网络,在词典中的定义是这样的: 在电的系统中,由若干元件组成的用来使电信号按一定要求传输的电路或这种电路的部分,叫网络. 作为一名从事过TMN开发的通信

AJAX请求和跨域请求详解(原生JS、Jquery)

一.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = 异步 JavaScript 和 XML,是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面. 本博客实验环境: python:2.7.11 web框架:tonado jquery:2.1.1 二.“伪”AJAX 由于