`
shaojiashuai123456
  • 浏览: 266012 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

tornado记录请求处理时间

阅读更多
class TestHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    @tornado.gen.engine
    def get(self):
        try:
            logger.error('query[%s] time[%s]'%(str_req, self.request.request_time()))
        except:
            logger.error('error [%s][%s]'% (self.request.uri, traceback.format_exc()))
            self.write('')
        finally:
            try:
                self.finish()
            except:
                pass

          如上代码,其中self.request.request_time(),记录的时间是请求开始处理到现在的时间,而并到达时间到发送时间。因此在并发量过大时,调用接口的代码可能发生超时,而此时间打印出来的时间却不存在超时,因为它不包括在epoll事件队列中的等待时间。

         下面为request_time()函数原型。

 

class HTTPRequest(object):
       def __init__(self, method, uri, version="HTTP/1.0", headers=None,
                 body=None, remote_ip=None, protocol=None, host=None,
                 files=None, connection=None):
        ...
        self._start_time = time.time()
        self._finish_time = None
        ...
       

    def request_time(self):
        """Returns the amount of time it took for this request to execute."""
        if self._finish_time is None:
            return time.time() - self._start_time
        else:
            return self._finish_time - self._start_time

 

           其中 self._start_time 是在HTTPRequest初始化是被赋值。而初始化的位置就在开始处理数据包的时刻,代码位于HTTPConnection类的解析请求头部函数_on_headers中。

   

//HttpServer.py
class HTTPConnection(object):

    def _on_headers(self, data):
        try:
           ...

            self._request = HTTPRequest(
                connection=self, method=method, uri=uri, version=version,
                headers=headers, remote_ip=remote_ip)

            ...
        except _BadRequestException, e:
            logging.info("Malformed HTTP request from %s: %s",
                         self.address[0], e)
            self.close()
            return

  

 

分享到:
评论

相关推荐

    tornado 4.0.1 python framework guide

    - **处理程序类**:定义了具体的 HTTP 请求处理逻辑。 - **路由配置**:将 URL 映射到对应的处理程序类。 - **模板引擎**:用于渲染动态 HTML 内容。 - **静态文件服务**:提供对 CSS、JavaScript 文件的支持。 - **...

    tornado.pdf

    1. **异步编程**:Tornado的核心是其异步模型,它允许在等待I/O操作(如网络通信)完成时执行其他任务,显著提高了服务器处理并发请求的能力。 2. **Web框架**:Tornado提供了构建Web应用的全套工具,包括路由系统...

    基于HAR Editor和Tornado Server的HTTP请求定时任务自动执行框架设计源码

    在当今信息化快速发展的时代,网络请求的自动化和定时执行变得越来越重要,尤其是在需要高效处理大量网络请求的应用场景中。为了满足这一需求,开发者们设计并实现了一款基于HAR Editor和Tornado Server的HTTP请求...

    tornado-4.5.2-cp36-cp36m-win_amd64.zip

    6. **AsyncHTTPClient**: Tornado 的 AsyncHTTPClient 实现了异步HTTP请求,能够在单线程中并发处理多个HTTP请求,非常适合于大数据量的请求处理。 7. **Authentication和Session管理**: Tornado 提供了一些基础的...

    tornado-5.1.1.tar.gz

    Tornado 是一个开源的 Python 网络框架和异步网络库,用于处理在 C10K 问题下需要长时间连接的客户端。Tornado 的设计目的是为了支持可扩展的单服务器应用,它是一个非常适合于构建实时 Web 服务的应用程序。Tornado...

    tornado-6.3.2.tar.gz

    Tornado也支持cookie加密处理,提供了内置的身份验证支持,以及可以自定义请求处理中间件,这意味着开发者可以轻松地添加用户认证、日志记录、跨域资源共享(CORS)等功能,而不需要从头开始编写这些功能的代码。...

    tornado-6.3.tar.gz

    Tornado的设计哲学包括异步编程范式,这意味着它可以处理大量的实时连接,并且在处理网络请求时不需要为每个请求创建新的线程。这种设计极大地提高了服务器的效率和性能。Tornado的异步特性和Python的简洁语法相结合...

    Python高效开发实战 Django Tornado Flask Twisted

    Tornado以其非阻塞式IO和协程的支持,适合构建需要支持大量长时间连接的应用,例如聊天服务、WebSocket支持以及实时服务等。由于Tornado采用单线程非阻塞IO模型,因此它非常适合I/O密集型应用。Tornado的内建HTTP...

    Tornado+Sqlalchemy定时任务实现事件提醒.zip

    1. Tornado的Web框架使用:项目开发中如何使用Tornado构建Web服务,包括创建HTTP请求的处理函数、定义路由等。 2. Tornado的异步编程特性:项目如何利用Tornado的协程和非阻塞IO特性来提高任务执行的效率,尤其是在...

    tornado-6.0a1.tar.gz

    Tornado具备处理高并发连接的能力,尤其适合于需要长时间保持连接的应用场景,如长轮询、WebSocket、WebSockets和其他需要与客户端建立长连接的应用。 Tornado的主要特性包括非阻塞的I/O能力、简单的异步编程模式,...

    6第一次数据请求 2:为用户处理模块增加 log 管理(1).md

    在本例中,开发者在Tornado的请求处理类中使用了`logging`模块来记录日志,这样做可以使日志的使用更灵活,同时也能利用`logging`模块提供的高级功能。 ### 知识点八:日志记录的实践示例 在提供的内容中,展示了...

    tornado官网文档

    - **异步处理**: 如何利用 Tornado 的非阻塞 I/O 进行异步处理。 - **模板引擎**: Tornado 内置的模板引擎介绍。 - **安全性**: 如何实现安全的 Web 应用。 - **静态文件服务**: 提供静态文件服务的方法。 - **多...

    Tornado+Sqlalchemy定时任务实现事件提醒_hy5.zip

    首先,Tornado的异步网络框架能够处理高并发的HTTP请求,这对于实现定时任务来说是非常重要的,因为它可以保证即使在高负载的情况下,定时任务的调度也不会受到影响。其次,Sqlalchemy提供了ORM(对象关系映射)功能,...

    python使用tornado实现简单爬虫

    代码中还出现了`time`模块的使用,它是Python标准库的一部分,用于处理时间相关的问题。在爬虫中,我们使用它来记录开始时间戳和计算耗时。 在实际应用中,网络爬虫编写完成后,还需要对其进行测试,确保爬虫能够...

    云海项目管理系统,是基于python的tornado框架实现的一个项目管理系统.zip

    3. **异步处理**:Tornado框架支持非阻塞I/O和异步操作,使得系统在处理大量并发请求时表现出色。这对于一个项目管理系统来说至关重要,因为它需要实时更新和处理来自多个用户的请求。 4. **RESTful API**:基于...

    基于 Tornado 的直播软件可以支持主持人和观众两种角色,让参与者之间可以进行音视频互动和实时文字交流.zip

    【标题】中的“基于 Tornado 的直播软件”指的是利用 Tornado 框架构建的实时通信应用,Tornado 是一个高性能、异步网络库,特别适合处理 WebSockets 和长轮询等需要长时间连接的场景,非常适合用于直播平台,使得...

    tornado-statsd-example

    @statsd.timed('main_handler.time') # 使用装饰器记录处理时间 def get(self): self.write("Hello, world!") self.statsd.incr('main_handler.requests') # 记录请求次数 ``` 在这个例子中,我们定义了一个名...

    举例讲解Python的Tornado框架实现数据可视化的教程

    本教程将深入探讨如何利用Tornado实现数据可视化,特别是在处理和展示考勤记录方面。Tornado的异步特性使其在处理大量并发请求时表现出色,对于实时数据更新和交互式图表的展示非常合适。 首先,我们需要引入一些...

    python写的一个不成熟的项目 秒苗 九价 秒杀

    在这个项目中,Python可能用于构建整个系统的后端逻辑,包括数据库操作、请求处理等。 2. Web框架:为了快速开发Web应用,Python提供了许多成熟的框架,如Django、Flask等。在这个项目中,可能使用了其中一种框架来...

Global site tag (gtag.js) - Google Analytics