summaryrefslogtreecommitdiff
path: root/crocoite/browser.py
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2017-12-22 17:43:52 +0100
committerLars-Dominik Braun <lars@6xq.net>2017-12-22 17:43:52 +0100
commitfd279ff3168c91be2ed8a012af6395034475ccf5 (patch)
treef4a8b55db5f158a4be4cf8c48aa82d944c206595 /crocoite/browser.py
parentbcfbdd9b45b7e872ee77e1366197443d855d8c7c (diff)
downloadcrocoite-fd279ff3168c91be2ed8a012af6395034475ccf5.tar.gz
crocoite-fd279ff3168c91be2ed8a012af6395034475ccf5.tar.bz2
crocoite-fd279ff3168c91be2ed8a012af6395034475ccf5.zip
Add simple stats-keeping SiteLoader
Diffstat (limited to 'crocoite/browser.py')
-rw-r--r--crocoite/browser.py35
1 files changed, 33 insertions, 2 deletions
diff --git a/crocoite/browser.py b/crocoite/browser.py
index e7eb4e2..e1feda9 100644
--- a/crocoite/browser.py
+++ b/crocoite/browser.py
@@ -148,8 +148,12 @@ class SiteLoader:
self.browser.close_tab(self.tab)
return False
- def loadingFinished (self, item):
- self.logger.debug ('item finished {}'.format (item))
+ # overrideable callbacks
+ def loadingFinished (self, item, redirect=False):
+ pass
+
+ def loadingFailed (self, item):
+ pass
# internal chrome callbacks
def _requestWillBeSent (self, **kwargs):
@@ -213,6 +217,33 @@ class SiteLoader:
reqId = kwargs['requestId']
self.logger.warn ('failed {} {}'.format (reqId, kwargs['errorText'], kwargs.get ('blockedReason')))
item = self.requests.pop (reqId, None)
+ self.loadingFailed (item)
+
+class AccountingSiteLoader (SiteLoader):
+ """
+ SiteLoader that keeps basic statistics about retrieved pages.
+ """
+
+ def __init__ (self, browser, url, logger=logging.getLogger(__name__)):
+ super ().__init__ (browser, url, logger)
+
+ self.stats = {'requests': 0, 'finished': 0, 'failed': 0, 'bytesRcv': 0}
+
+ def loadingFinished (self, item, redirect=False):
+ super ().loadingFinished (item, redirect)
+
+ self.stats['finished'] += 1
+ self.stats['bytesRcv'] += item.encodedDataLength
+
+ def loadingFailed (self, item):
+ super ().loadingFailed (item)
+
+ self.stats['failed'] += 1
+
+ def _requestWillBeSent (self, **kwargs):
+ super ()._requestWillBeSent (**kwargs)
+
+ self.stats['requests'] += 1
import subprocess
from tempfile import mkdtemp