tornado httpserver

这是一个非阻塞的,单线程的httpserver。这个类一般是不会被应用程序直接调用的,它一般是被上层的tornado.web.Application.listen方法调用,因为这个listen方法是这样定义的

 def listen(self, port, address="", **kwargs):
        """Starts an HTTP server for this application on the given port.

        This is a convenience alias for creating an `.HTTPServer`
        object and calling its listen method.  Keyword arguments not
        supported by `HTTPServer.listen <.TCPServer.listen>` are passed to the
        `.HTTPServer` constructor.  For advanced uses
        (e.g. multi-process mode), do not use this method; create an
        `.HTTPServer` and call its
        `.TCPServer.bind`/`.TCPServer.start` methods directly.

        Note that after calling this method you still need to call
        ``IOLoop.current().start()`` to start the server.

        Returns the `.HTTPServer` object.

        .. versionchanged:: 4.3
           Now returns the `.HTTPServer` object.
        """
        # import is here rather than top level because HTTPServer
        # is not importable on appengine
        from tornado.httpserver import HTTPServer
        server = HTTPServer(self, **kwargs)
        server.listen(port, address)
        return server

@staticmethod和@classmethod,实例方法的区别

@classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例。因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。

静态方法则没有,它基本上跟一个全局函数相同,一般来说用的很少,只是包含在类结构中,实际跟类没有关系,要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。

版本4.0的变化

HTTPRequest类被移动到了tornado.httputil.HTTPServerRequest,原来的名字还是可以使用的

HTTpServer默认支持keep-alive连接,自动支持HTTP/1.1,当客户端要求keep-alive连接时变为HTTP/1.0

时间: 2024-10-17 21:49:14

tornado httpserver的相关文章

Python框架之Tornado(二)请求阶段

概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) 简而言之: 1.在启动程序阶段,第一步,获取配置文件然后生成url映射(即:一个url对应一个XXRequestHandler,从而让XXRequestHandler来处理指定url发送的请求):第二步,创建服务器socket对象并添加到epoll中:第三步,创建无线循环去监听epoll. 2.在

第二篇:白话tornado源码之待请求阶段

上篇<白话tornado源码之一个脚本引发的血案>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分: 启动程序阶段,又称为待请求阶段(上图1.2所有系列和3.0) 接收并处理客户端请求阶段(上图3系列) 简而言之: 1.在启 动程序阶段,第一步,获取配置文件然后生成url映射(即:一个url对应一个XXRequestHandler,

Tornado模块分类和各模块之间的关系

1. Core web framework tornado.web — 包含web框架的大部分主要功能,包含RequestHandler和Application两个重要的类 tornado.httpserver — 一个无阻塞HTTP服务器的实现 tornado.template — 模版系统 tornado.escape — HTML,JSON,URLs等的编码解码和一些字符串操作 tornado.locale — 国际化支持 2. Asynchronous networking 底层模块 t

在tornado中使用celery实现异步任务处理之一

一.简介 tornado-celery是用于Tornado web框架的非阻塞 celery客户端. 通过tornado-celery可以将耗时任务加入到任务队列中处理, 在celery中创建任务,tornado中就可以像调用AsyncHttpClient一样调用这些任务. ? Celery中两个基本的概念:Broker.Backend Broker : 其实就是一开始说的 消息队列 ,用来发送和接受消息. Broker有几个方案可供选择:RabbitMQ,Redis,数据库等 Backend:

tornado源码分析系列一

先来看一个简单的示例: #!/usr/bin/env  python #coding:utf8 import socket def run():     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     sock.bind(('127.0.0.1',8008))     sock.listen(5)          while True:         connection,address = sock.accept()

python框架之 Tornado 学习笔记(一)

tornado 一个简单的服务器的例子: 首先,我们需要安装 tornado ,安装比较简单: pip  install tornado 测试安装是否成功,可以打开python 终端,输入: import     tornado.httpserver 若无报错,则证明安装成功 接下来就可以写一个简单的服务器了,如下: import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web

使用 Tornado 跟 SSL 建立安全链接

首先,我们需要的当然就是 Tornado.Python.OpenSSL, 这里只是记录建立 ssl ,需要其他 linux 下知识的暂时不讲,需要的话以后另开主题. 其实 Tornado 本身已经支持了 SSL ,所以我们这里主要的只是生成可用的证书. 到 OpenSSL 的安装目录的 bin 文件夹下,参考 openssl.cfg/openssl.cnf 文件可以按自己的需要设置证书要用的目录啥的,这里我们使用默认, 首先在OpenSSL下建立一个 demoCA 目录,然后在 demoCA 目

tornado settings想到的

今天有足够多的时间来看看Tornado中RequestHandler和Application这两个类的关系. 昨天想要调用settings中的内容,找了好半天不知道怎么在handler中使用settings,后来一点一点试出来了,哈哈.比如一个类: class HelloHandler(tornado.web.RequestHandler): def get(self): path = self.application.settings["static_path"] self.writ

tornado websocket

近期在网上找了些websocket的资料看了下.node和tornado等等本身已经实现了websocket的封装,所以使用起来会比較简单,php假设想要写websocket还须要自己跑一整套流程,比較麻烦. 依据网上的资料写了一个简单的websocket的demo,果真炫酷掉渣天,我是用tornado,网上多是实现实时聊天室的样例,想要实现点对点的聊天功能还须要在send函数那里加条件,目測是依据浏览器用户的id去推断的.代码例如以下: 服务端代码: #!/usr/bin/python #co