# 安装

pip insatll tornado

# 主文件 web_server.py

#!/usr/bin/env python
# encoding: utf-8 import tornado.httpserver
import tornado.options
import tornado.web
from tornado.options import define,options
import sys,os,re from apicode import Apicode # 具体自己业务用到的模块!! reload(sys)
sys.setdefaultencoding('utf-8') # 定义默认调用端口为8088
define("port",default=8088,help="run on the given port",type=int) # 验证码演示demo
class VcodeHandler(tornado.web.RequestHandler):
# get 请求
def get(self):
result = self.get_argument("result",{})
city = self.get_argument('city', u'重庆')
self.render("input_code.html", city=city, result=result) # post 请求
def post(self): result = {'code':0 , 'msg': 'success', 'result': ''} # 获取参数
city = self.get_argument('city', 'CQ')
method = self.get_argument('method', 'LR')
detail = eval(self.get_argument('detail', False))
imgUrl = self.get_argument('imgUrl', '')
imgFile = self.request.files.get('imgfile', [])
fname = '' # url 方式
if imgUrl and re.search('.+\.(jpg|png|bmp|gif)', imgUrl):
fname = './static/uploads/%s' % imgUrl.split('/')[-1]
result['result']= vcode.predict_url(city, imgUrl, detail, method) # 上传文件方式
elif imgFile:
for img in imgFile:
with open('./static/uploads/' + img['filename'], 'wb') as fw:
fw.write(img['body'])
fname = './static/uploads/' + img['filename']
result['result'] = vcode.predict(city, fname, detail, method)
else:
errorMsg = "上传验证码图片文件错误或url图片格式不正确"
result['code'] = '-1'
result['msg'] = errorMsg self.render("output_code.html", city=city, source=fname, detail=detail, method=method, result=result) # 验证码调用api
class VcodeApiHandler(tornado.web.RequestHandler): def get(self):
result = {'code': 1000 , 'msg': '调用参数错误, 请用post方式请求, city & imgfile 参数', 'result': '使用说明: http://gitlab.tangees.com/miaoweihong/verify-code'}
json_result = tornado.escape.json_encode(result)
self.write(json_result) def post(self): result = {'code': 0 , 'msg': 'success', 'result': ''}
city = self.get_argument('city', 'CQ')
method = self.get_argument('method', 'LR')
detail = eval(self.get_argument('detail', False)) imgFile = self.request.files.get('imgfile', [])
if imgFile:
for img in imgFile:
with open('./static/uploads/' + img['filename'], 'wb') as fw:
fw.write(img['body'])
fname = './static/uploads/' + img['filename']
try:
result['result'] = vcode.predict(city, fname, detail, method)
except Exception as e:
result['code'] = 1001
result['msg'] = '上传文件内容有误' + str(e)
else:
result['code'] = 1002
result['msg'] = '没有文件内容'
# 返回json结果
json_result = tornado.escape.json_encode(result)
self.write(json_result) class TestHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello, jkmiao') if __name__ == "__main__": # 引入自行定义的模块
vcode = Apicode()
tornado.options.parse_command_line() app = tornado.web.Application(
handlers = [(r'/vcode',VcodeHandler), (r'/vcodeapi', VcodeApiHandler)], # url匹配
template_path = os.path.join(os.path.dirname(__file__),"templates"), # 定义视图页面地址,放 html文件
static_path = os.path.join(os.path.dirname(__file__), "static"), # 定义静态模板,放 css,js等文件
debug=True, # 是否为debug模式
autoescape=None, # 不设置转义字符
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
print "starting tornado at port http://127.0.0.1:%d" % options.port
tornado.ioloop.IOLoop.instance().start()

搞定!

教程

===============最基本  hello world ==================

代码清单:hello.py

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web from tornado.options import define, options
define("port", default=, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', friendly user!') if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

tornado api 简单模板的更多相关文章

  1. Libvlc API 简单说明 [转]

    Libvlc API 简单说明 原文来自http://www.xuebuyuan.com/1519616.html libvlc_instance_t* libvlc_new(int argc, co ...

  2. tornado 学习笔记9 Tornado web 框架---模板(template)功能分析

            Tornado模板系统是将模板编译成Python代码.         最基本的使用方式: t = template.Template("<html>{{ myv ...

  3. vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板)

    vs 2013下自定义ASP.net MVC 5/Web API 2  模板(T4 视图模板/控制器模板): Customizing ASP.NET MVC 5/Web API 2 Scaffoldi ...

  4. 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)

    简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...

  5. salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)

    Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...

  6. 基于C语言libvirt API简单小程序

    libvirt API简单小程序 1.程序代码如下 #include<stdio.h> #include<libvirt/libvirt.h> int getDomainInf ...

  7. helm-chart-2-chart结构和简单模板

    1, chart 结构介绍 我们创建一个chart 并查看其结构 右侧注释为其文件的的解释 $ helm create mychart $ cd mychart/ $ tree ├── charts ...

  8. maven pom文件简单模板和配置详解

    https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解

  9. day8学python 各种简单模板

    各种简单模板 内容: 1.shelve模板 存储数据 2.shutil 模板 用作拷贝/删除/压缩文件(使用便捷) 3.hashlib 模板 加密文件 4.re模板 ================= ...

随机推荐

  1. What Is Mathematics?

    What Is Mathematics? The National Council of Teachers of Mathematics (NCTM), the world's largest org ...

  2. awk(2)-模式(pattern)

    在上文 awk(1)-简述我们将简要描述了awk的主要使用方向和构成(由一个或多个模式-动作组成),本小节主要讲述awk的各种模式. ps:例子中使用的输入文件(如countries)内容可由awk( ...

  3. EtherType

    EtherType is a two-octet field in an Ethernet frame. It is used to indicate which protocol is encaps ...

  4. javascript在html中的加载顺序

    参考:[1]http://coolshell.cn/articles/9749.html(酷壳) [2]http://shaozhuqing.com/?p=2756 [3]http://www.cnb ...

  5. dotproject 2.1.8 甘特图中文乱码解决

    1.安装中文语言包 下载地址为http://www.dotproject.net/dpDownloads/Language_Packs/Chinese_Simplified_(GBK)/dotproj ...

  6. JS 设计模式

    1.单例模式:产生一个类的唯一实例 例如:我们在页面中添加遮罩层,每次只能有一个遮罩层存在,因此为单例模式. 在创建遮罩层之前判断是否已经存在,若没有存在,则创建. 这里使用闭包,将是mask变量封装 ...

  7. css兼容问题

    Opacity的兼容处理          filter:alpha(opacity=100); /* IE */        opacity: 0.5; /* 支持opacity的浏览器*/

  8. apache2.2 搭载本地中转服务器

    android手机微信里点击本地链接=>apache2.2服务器响应--- 翻译网址至本地目标服务器 ---目标服务器响应,返回结果给微信浏览器. 运行环境 微信版本6.3.8 手机 MIUI6 ...

  9. java内存分配--引用

    栈内存  对象地址 堆内存  存放属性 public class TestDemo{ public static void main(String args[]){ Person perA =new ...

  10. JS的字符串处理

    1.字符串包含判断 var a = "qwer"; var b = "q"; if (a.contains(b)) { alert("1") ...