diff options
Diffstat (limited to 'crocoite')
-rw-r--r-- | crocoite/behavior.py | 4 | ||||
-rw-r--r-- | crocoite/cli.py | 9 | ||||
-rw-r--r-- | crocoite/controller.py | 12 |
3 files changed, 23 insertions, 2 deletions
diff --git a/crocoite/behavior.py b/crocoite/behavior.py index 2d1dd0d..02fe2ea 100644 --- a/crocoite/behavior.py +++ b/crocoite/behavior.py @@ -198,10 +198,14 @@ class EmulateScreenMetrics (Behavior): l = self.loader tab = l.tab for s in sizes: + self.logger.debug ('device override', + uuid='3d2d8096-1a75-4830-ad79-ae5f6f97071d', **s) await tab.Emulation.setDeviceMetricsOverride (**s) # give the browser time to re-eval page and start requests # XXX: should wait until loader is not busy any more await asyncio.sleep (1) + self.logger.debug ('clear override', + uuid='f9401683-eb3a-4b86-9bb2-c8c5d876fc8d') await tab.Emulation.clearDeviceMetricsOverride () return yield # pragma: no cover diff --git a/crocoite/cli.py b/crocoite/cli.py index 1f22c45..0595eb9 100644 --- a/crocoite/cli.py +++ b/crocoite/cli.py @@ -23,6 +23,7 @@ Command line interface """ import argparse, sys, signal, asyncio, os +from traceback import TracebackException from enum import IntEnum from yarl import URL try: @@ -86,6 +87,14 @@ def single (): ret = SingleExitStatus.Ok except Crashed: ret = SingleExitStatus.BrowserCrash + except asyncio.CancelledError: + # don’t log this one + pass + except Exception as e: + ret = SingleExitStatus.Fail + logger.error ('cli exception', + uuid='7fd69858-ecaa-4225-b213-8ab880aa3cc5', + traceback=list (TracebackException.from_exception (e).format ())) finally: r = handler[0].stats logger.info ('stats', context='cli', uuid='24d92d16-770e-4088-b769-4020e127a7ff', **r) diff --git a/crocoite/controller.py b/crocoite/controller.py index 788a131..772bf44 100644 --- a/crocoite/controller.py +++ b/crocoite/controller.py @@ -22,8 +22,7 @@ Controller classes, handling actions required for archival """ -import time -import tempfile, asyncio, json, os +import time, tempfile, asyncio, json, os from itertools import islice from datetime import datetime from operator import attrgetter @@ -176,23 +175,32 @@ class SinglePageController: if not finished: # idle timeout + logger.debug ('idle timeout', + uuid='90702590-94c4-44ef-9b37-02a16de444c3') idleProc.cancel () timeoutProc.cancel () break elif handle in finished: # something went wrong while processing the data + logger.error ('fetch failed', + uuid='43a0686a-a3a9-4214-9acd-43f6976f8ff3') idleProc.cancel () timeoutProc.cancel () handle.result () assert False # previous line should always raise Exception elif timeoutProc in finished: # global timeout + logger.debug ('global timeout', + uuid='2f858adc-9448-4ace-94b4-7cd1484c0728') idleProc.cancel () timeoutProc.result () break elif idleProc in finished: # idle state change isIdle = idleProc.result () + logger.debug ('idle state', + uuid='e3eaff79-7b56-4d17-aa42-d32fa1ec268b', + idle=isIdle) if isIdle: # browser is idle, start the clock idleTimeout = self.settings.idleTimeout |