zoukankan      html  css  js  c++  java
  • tornado1

    1.基本操作

      

    2.自定义开源组件

      - session

      - form表单验证(*)

    3.自定义异步非阻塞web框架

    import tornado.ioloop
    import tornado.web
    # 定义处理类型
    class MainHandler(tornado.web.RequestHandler):
      # 添加一个处理get请求方式的方法
    def get(self):
         # 向响应中添加数据 self.write(
    "dddddd")
         self.rander("main.html")
    def make_app():
      # 返回一个应用对象
    return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app()
       # 监听端口 app.listen(
    8888)
       # 启动web程序,开始监听端口的连接 tornado.ioloop.IOLoop.current().start()

    C10k问题:

      新到来一个TCP连接,就需要分配一个进程。假如有C10K,就需要创建1W个进程,可想而知单机是无法承受的。那么如何突破单机性能是高性能网络编程必须要面对的问题,进而这些局限和问题就统称为C10K问题

      当创建的进程或线程多了,数据拷贝频繁(缓存I/O、内核将数据拷贝到用户进程空间、阻塞,进程/线程上下文切换消耗大, 导致操作系统崩溃,这就是C10K问题的本质。

      解决C10K问题的关键就是尽可能减少这些CPU资源消耗。

    1. 每个连接分配一个独立的线程/进程
    2. 同一个线程/进程同时处理多个连接

      Linux 系统需要修改内核参数和系统配置, 才能支持 C1000K. C1000K 的应用要求服务器至少需要 2GB 内存, 如果应用本身还需要内存, 这个要求应该是至少 10GB 内存. 同时, 网卡应该至少是万兆网卡.

    优点:

    一个url对应一个类

    轻量级web框架

    异步非阻塞IO处理方式

    抗负载能力强

    不依赖多进程/多线程,一定程度上解决C10k问题

    Django和tornado的区别:

    Django:功能大而全,注重高效开发,内置管理后台,内置封装完善的ORM操作,session功能,后台管理。缺点:高耦合

    tornado:功能少而精,注重性能优越,HTTP服务器,异步编程,websocket

    tornado.web:tornado的基础web框架

      RequestHandler:封装对请求处理的所有信息和处理方法

      get/post:封装对应的请求方式

      write:封装响应信息

    tornado.ioloop:核心io循环模块,封装linux的epoll和BSD的kqueue,tornado高性能处理的核心。

      current()返回当前线程的IOLoop实例对象

      start()启动IOLoop实例对象的IO循环,开启监听

    httpserver底层处理

    httpserver监听端口

    tornado.httpserver.HTTPServer(app)

    httpserver.listen(port)

    app = Application([(r'/',Index)],debug=True)

  • 相关阅读:
    java web 资源文件读取
    页面跳转
    验证码的随机图片
    spring 注解
    回文字符串系列问题
    【leetcode】Find All Anagrams in a String
    斐波那契数列
    【leetcode】 First Missing Positive
    Trapping Rain Water
    区间合并问题
  • 原文地址:https://www.cnblogs.com/xuezhihao/p/11399162.html
Copyright © 2011-2022 走看看