python web框架之tornado简单使用

复制代码
import sys
import os
sys.path.append(os.path.dirname(__file__) + os.sep + '../')
import json, datetime
from tornado.web import RequestHandler, Application
from tornado.ioloop import IOLoop
from tornado.httpserver import HTTPServer
from tornado.options import options
from tornado.concurrent import run_on_executor
from concurrent.futures import ThreadPoolExecutor
import tornado.gen
import uuid
from redis import Redis


redis_db = 1001
conn =Redis(db=redis_db)



#Test
class Test(RequestHandler):
  executor = ThreadPoolExecutor(200) #200连接数
  @run_on_executor #并发
  def post(self):
    print(self.request.body)
    if not self.request.body:
      return self.write(json.dumps({"status": 1, "message": "no postdata"}))
    from_data = json.loads(self.request.body) #获取postdata
 
 

#HealthCheck
class HealthCheck(tornado.web.RequestHandler):
  @tornado.gen.coroutine
  def get(self, *args, **kwargs):
    self.write((json.dumps({"health_check": "Success"})))



class TornadoServer:
  def handle(self):
    options.parse_command_line()
    # 创建一个项目应用,接入web服务器
    app = Application([
      (r"/health_check", HealthCheck), # 测试
      (r"/test", Test), # 获取代理
    ],
 
      settings={
      }
    )
    print('%s--tornado服务启动' % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    # 开始监听端口,提供服务
    http_server = HTTPServer(app)
    http_server.bind((8888)) #生成端口
    http_server.start() # 默认参数1 启动一个进程
    # start(num) num<=0 按照当前os cpu核心数量 进行 进程启动 fork
    # num>1 表示通过fork 启动多个子进程
    # 在启动IOLoop之前通过start函数设置进程数量,如果设置为0表示每个CPU都启动一个进程。
    IOLoop.current().start()


if __name__ == '__main__':
  TornadoServer().handle()
复制代码

 

posted @   惊世  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示