From ed74f8c60c2a0a5c74821ab750c2b7502fc34e0e Mon Sep 17 00:00:00 2001 From: benoitc Date: Mon, 21 Mar 2011 05:49:03 +0100 Subject: [PATCH] get performance times of parsing steps. --- restkit/client.py | 20 ++++++++++++++++++-- restkit/resource.py | 5 +++++ restkit/wrappers.py | 5 +++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/restkit/client.py b/restkit/client.py index 15a5f039..479cdb2a 100644 --- a/restkit/client.py +++ b/restkit/client.py @@ -2,6 +2,7 @@ # # This file is part of restkit released under the MIT license. # See the NOTICE for more information. +import datetime import base64 import errno import logging @@ -319,15 +320,25 @@ def perform(self, request): wait = self.wait_tries while tries > 0: try: + start = datetime.datetime.now() # get or create a connection to the remote host connection = self.get_connection(request) sck = connection.socket() - + + end = datetime.datetime.now() + print "get connection %s" % (end - start) + + start = datetime.datetime.now() # send headers headers_str = self.make_headers_string(request, connection.extra_headers) sck.sendall(headers_str) + end = datetime.datetime.now() + print "send headers %s" % (end - start) + + + start = datetime.datetime.now() # send body if request.body is not None: chunked = request.is_chunked() @@ -364,7 +375,9 @@ def perform(self, request): sendlines(sck, request.body, chunked) if chunked: send_chunk(sck, "") - + end = datetime.datetime.now() + print "send body %s" % (end - start) + return self.get_response(request, connection) except socket.gaierror, e: try: @@ -470,6 +483,7 @@ def get_response(self, request, connection): if log.isEnabledFor(logging.DEBUG): log.debug("Start to parse response") + start = datetime.datetime.now() unreader = http.Unreader(connection.socket()) while True: resp = http.Request(unreader, decompress=self.decompress, @@ -478,6 +492,8 @@ def get_response(self, request, connection): if resp.status_int != 100: break resp.body.discard() + end = datetime.datetime.now() + print "get headers %s" % (end - start) if log.isEnabledFor(logging.DEBUG): log.debug("Got response: %s" % resp.status) diff --git a/restkit/resource.py b/restkit/resource.py index 5d54a9ee..a2fba7cb 100644 --- a/restkit/resource.py +++ b/restkit/resource.py @@ -10,6 +10,7 @@ This module provide a common interface for all HTTP request. """ +import datetime from copy import copy import urlparse @@ -178,6 +179,7 @@ def request(self, method, path=None, payload=None, headers=None, params = params or {} params.update(params_dict or {}) + start = datetime.datetime.now() while True: uri = util.make_uri(self.uri, path, charset=self.charset, safe=self.safe, encode_keys=self.encode_keys, @@ -208,6 +210,9 @@ def request(self, method, path=None, payload=None, headers=None, else: break + end = datetime.datetime.now() + print "request time %s" % (end - start) + return resp def update_uri(self, path): diff --git a/restkit/wrappers.py b/restkit/wrappers.py index 17daaa2f..bf4bfe21 100644 --- a/restkit/wrappers.py +++ b/restkit/wrappers.py @@ -3,6 +3,7 @@ # This file is part of restkit released under the MIT license. # See the NOTICE for more information. +import datetime import cgi import copy import mimetypes @@ -228,6 +229,7 @@ def body_string(self, charset=None, unicode_errors="strict"): if not self.can_read(): raise AlreadyRead() + start = datetime.datetime.now() body = self._body.read() self._already_read = True @@ -239,6 +241,9 @@ def body_string(self, charset=None, unicode_errors="strict"): body = body.decode(charset, unicode_errors) except UnicodeDecodeError: pass + end = datetime.datetime.now() + print "get body time %s" % (end - start) + return body def body_stream(self):