• 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=8000, 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()
    每天一小步,人生一大步!Good luck~
  • 相关阅读:
    使用SHA256WithRSA来签名和验签(.NET/C#)
    对2个hex(16进制)字符串进行异或操作
    Java DESede 加解密("DESede/ECB/PKCS5Padding")
    获取公钥证书的DN(Distinguished Name)
    Java DES 加解密("DES/EBC/NoPadding")
    Porting .Net RSA xml keys to Java
    Linux使用Shell脚本实现ftp的自动上传下载
    Lombok 安装、入门
    一段对16进制字符串进行异或的代码
    一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。
  • 原文地址:https://www.cnblogs.com/jkmiao/p/6225362.html
Copyright © 2020-2023  润新知