tornado api 简单模板
# 安装
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 简单模板的更多相关文章
- Libvlc API 简单说明 [转]
Libvlc API 简单说明 原文来自http://www.xuebuyuan.com/1519616.html libvlc_instance_t* libvlc_new(int argc, co ...
- tornado 学习笔记9 Tornado web 框架---模板(template)功能分析
Tornado模板系统是将模板编译成Python代码. 最基本的使用方式: t = template.Template("<html>{{ myv ...
- 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 ...
- 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)
简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...
- salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)
Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...
- 基于C语言libvirt API简单小程序
libvirt API简单小程序 1.程序代码如下 #include<stdio.h> #include<libvirt/libvirt.h> int getDomainInf ...
- helm-chart-2-chart结构和简单模板
1, chart 结构介绍 我们创建一个chart 并查看其结构 右侧注释为其文件的的解释 $ helm create mychart $ cd mychart/ $ tree ├── charts ...
- maven pom文件简单模板和配置详解
https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解
- day8学python 各种简单模板
各种简单模板 内容: 1.shelve模板 存储数据 2.shutil 模板 用作拷贝/删除/压缩文件(使用便捷) 3.hashlib 模板 加密文件 4.re模板 ================= ...
随机推荐
- PowerDesigner中Name与Code同步的问题
转自:http://blog.sina.com.cn/u/48932504010005t9 PowerDesigner中,但修改了某个字段的name,其code也跟着修改,这个问题很讨厌,因为一般来说 ...
- Linux 压缩和解压缩常用命令
主要记录tar,zip,gzip,bzip2,rar等常用命令,对.tar..gz..tar.gz..tgz..bz2..tar.bz2..zip..rar这8种压缩文件的操作. 1. tar 命令 ...
- CentOS 系统安装
1.安装时分区建立 建立/boot分区 500M /swap 10000M 剩余空间建立PV PV加入VG 建立LV 全部挂在到/ 2安装模式选择:基本安装 开发工具全部装,SERVER 全部不选,中 ...
- 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
腾讯优测是专业的移动自动化测试平台,提供多维度的自动化测试服务,让测试更简单! 近期有报道称,澳大利亚悉尼市新某大学的一名男生在课堂上看电影,不料耳机没有插好,变成了现场直播... 如果你认为耳机没插 ...
- sudo add-apt-repository no found解决方法
sudo apt-get install python-software-propertiessudo apt-get install software-properties-common
- ipython安装
sudo pip install jupyter 然后用jupyter notebook来运行
- getEnhancedMicrophone 方法
[转]http://www.cnblogs.com/iBlogger/archive/2011/11/16/2251847.html Flex 4.6 SDK 提供了 getEnhancedMicro ...
- uva 10820
/* 交表 _________________________________________________________________________________ #include < ...
- sql中的跨库查询
在sql查询时,需要关联2个服务器上的不同数据库,只需要在所需查询的表名前加上服务器地址即可. 例如:在 192.168.0.15,8020的db110库 和 192.168.0.150,8082的d ...
- OpenGL法向量变换
OpenGL光照开启时,法向量用于决定特定顶点或面上接受到光照的多少.光照处理过程作用于观察坐标空间,因此,模型对象坐标系的法向量也需要使用GL_MODELVIEW矩阵变换到观察坐标系. 然而,法向量 ...