#!/usr/bin/env python
# -*- coding:utf-8 -*-
# ---------------------------------------
# email : gengjie@outlook.com
# Create Time: 4/9/16 20:58
# ---------------------------------------- import json
import time
from tornado.web import RequestHandler
from tornado.web import Application
from tornado.ioloop import IOLoop
from tornado.log import app_log class ArgumentHandler(RequestHandler):
'''return last name value'''
def get(self):
self.write('hello {0}'.format(self.get_argument('name'))) class ArgumentsHandler(RequestHandler):
'''return all name args'''
def get(self):
self.write('hello {0}'.format(', '.join(self.get_arguments('name')))) class BodyHandler(RequestHandler):
'''Get body'''
def post(self):
body = json.loads(self.request.body.decode())
app_log.warning(self.request.body.decode())
self.write('hello {0}'.format(body['name'])) class PathArgsHandler(RequestHandler):
def get(self, *args, **kwargs):
self.write('hello {0}'.format(args[0])) class PathKwargsHandler(RequestHandler):
def get(self, *args, **kwargs):
self.write('hello {0}'.format(kwargs['name'])) class RemoteHandler(RequestHandler):
'''Get client Ip'''
def get(self, *args, **kwargs):
self.write(self.request.remote_ip) class FobiddenHandler(RequestHandler):
def get(self, *args, **kwargs):
self.set_status(403)
self.write('forbidden') class CustomStatusHandler(RequestHandler):
def get(self, *args, **kwargs):
self.set_status(498, reason='Custom Error.')
self.finish() class HeaderHandler(RequestHandler):
def get(self, *args, **kwargs):
self.set_header('X-Header', 'Set_001')
self.add_header('X-Header', 'Add_001')
self.write('hello head') class MultWriteHandler(RequestHandler):
def get(self, *args, **kwargs):
self.write('start\n')
self.flush()
for x in range(10):
self.write('{0}\n'.format(x))
self.flush()
time.sleep(0.1)
self.finish('complete\n') if __name__ == '__main__':
app = Application(
[
(r'/', ArgumentHandler),
(r'/args', ArgumentsHandler),
(r'/body', BodyHandler),
(r'/path/args/(.*)', PathArgsHandler),
(r'/path/kwargs/(?P<name>.*)', PathKwargsHandler),
(r'/ip', RemoteHandler),
(r'/403', FobiddenHandler),
(r'/498', CustomStatusHandler),
(r'/head', HeaderHandler),
(r'/multi', MultWriteHandler)
]
)
app.listen(port=8001, address='0.0.0.0')
IOLoop.current().start()

python 之tornado 入门的更多相关文章

  1. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  2. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  3. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

  4. Python不完全入门指南

    适用范围: 有一定编程基础,想快速入门python的人群 说明: 使用jupyter notebook编写,可以使用nbviewer网站进行查看. Python不完全入门指南 项目放在github上, ...

  5. GJM : Python简单爬虫入门(二) [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  6. 【Python】使用python的tornado配合html页面示例

    背景:java写的非标加密算法,测试时执行java工程进行解密测试,很不方便. 目的:想写个web页面,使得任何测试人员都可以在输入加密串时得到解密后字段,方便日志查询及字段核对.(额,算法部分就不写 ...

  7. Python第一天——入门Python(1)数据定义

    数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...

  8. Python系列之入门篇——HDFS

    Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...

  9. Python系列之入门篇——MYSQL

    Python系列之入门篇--MYSQL 简介 python提供了两种mysql api, 一是MySQL-python(不支持python3),二是PyMYSQL(支持python2和python3) ...

随机推荐

  1. vs 2015常用快捷键

    原文 :http://www.23pro.com/post/4.html 1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键"Ctrl + -"; 2 ...

  2. GAME(A)性能测试过程模型

  3. javascript判断浏览器类型与版本

    转自 司徒正美博客: http://www.cnblogs.com/rubylouvre/archive/2009/10/14/1583362.html

  4. Python sphinx-build在Windows系统中生成Html文档

    看到前同事发布的“Markdown/reST 文档发布流水线”基于TFS.Docker.Azure等工具和平台进行文档发布的介绍说明,不得不在心中暗暗竖起大拇指.这套模式,实现了文档编写后版本管理.发 ...

  5. .NET Core中妙用unsafe减少gc提升字符串处理性能

    一.前言 昨天在群里讨论怎么样效率的把一个字符串进行反转,一般的情况我们都知道,只要对String对象进行操作,那么就会生成新的String对象,比如"1"+"2&quo ...

  6. InstallShield打包

    使用2010部分汉化版(2010之后找不到更新的破解版本),主要用于打包桌面应用程序. 主要步骤: 1.3种主要的工程类型: Basic MSI,安装脚本不易使用. InstallScript,无法加 ...

  7. ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传

    软件技术开发,合作请联系QQ:858-048-581 这里我通过使用uploadify组件来实现异步无刷新多文件上传功能. 1.首先下载组件包uploadify,我这里使用的版本是3.1 2.下载后解 ...

  8. 用OC和Swift一起说说二叉树

    前言:    一:在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subt ...

  9. 信号处理——傅里叶变换(FT-DTFT-DFT)

    作者:桂. 时间:2017-01-17  23:41:13 链接:http://www.cnblogs.com/xingshansi/articles/6294111.html 声明:转载请注明出处, ...

  10. Pdf File Writer 中文应用(PDF文件编写器C#类库)

    该文由小居工作室(QQ:2482052910)    翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...