`
shaojiashuai123456
  • 浏览: 262157 次
  • 性别: 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应用的全套工具,包括路由系统...

    tornado-4.5.2-cp36-cp36m-win_amd64.zip

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

    Python高效开发实战 Django Tornado Flask Twisted

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

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

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

    tornado官网文档

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

    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等。在这个项目中,可能使用了其中一种框架来...

    forum_by_tornado:这是龙卷风论坛,f2e.im的前端接口参考

    Tornado提供了HTTP请求处理功能,可以接收前端提交的注册数据,进行合法性校验,并将新用户信息存储到数据库中。密码加密是安全措施之一,通常采用如bcrypt或argon2等安全算法对用户密码进行哈希处理,确保即使数据...

    PyPI 官网下载 | sprockets.mixins.metrics-1.0.1.tar.gz

    这个库的核心是其提供的“混合”(mixin)类,这些类可以被集成到你的应用的请求处理类中,以方便地记录和报告各种性能指标,如响应时间、请求频率等。使用这些混合类,开发者可以轻松地监控应用的运行状况,从而更...

    基于 Python 轻松自建 App 服务器.pdf

    GET 请求可被缓存、保留在浏览器历史记录中,并可以被收藏为书签。然而,GET 请求不应该用来处理敏感数据,并且由于 URL 长度限制,不适用于传输大量数据。 - **POST 请求**:通常用于提交数据给服务器进行处理。...

    Python可视化.docx

    - **请求处理函数**: - 定义了处理不同HTTP请求的方法。 #### 六、总结 通过本文的介绍,我们了解了如何使用Python中的Tornado框架和相关技术实现考勤数据的读取、存储和可视化。这种技术栈不仅适用于小型项目,...

    IP地址过滤

    5. **性能优化**:高效的IP匹配算法,确保在处理大量网络请求时,不会对系统性能造成显著影响。 在实际应用中,IP地址过滤可以应用于多种场景: - **防止DDoS攻击**:通过阻止已知攻击源的IP,减轻分布式拒绝服务...

    13总结(1).md

    学习Tornado包括了解它的路由机制、请求处理流程、以及如何编写异步服务器端代码。 3. App客户端与服务器端之间的数据通信: App客户端与服务器端的数据通信是移动应用开发中非常重要的一个环节。通信过程通常涉及...

    基于 PubNub Python 的用于核心 Python、 Twsted 和 Tornell 的 API

    - **历史消息存储**:可以存储一定时间内的消息历史,方便客户端获取过去的消息。 - **频道权限管理**:允许设置频道的读写权限,确保数据安全。 - **地理位置服务**:结合地理位置信息发送消息,实现基于位置的...

Global site tag (gtag.js) - Google Analytics