Handle null executor cancellations separately from other exceptions

This commit is contained in:
Jake Moshenko 2017-05-15 13:45:44 -04:00
parent 6023e15274
commit 21cb9f1aa1
2 changed files with 9 additions and 2 deletions

View file

@ -54,10 +54,15 @@ class AsyncExecutorWrapper(object):
return f
class NullExecutorCancelled(CancelledError):
def __init__(self):
super(NullExecutorCancelled, self).__init__('Null executor always fails.')
class NullExecutor(Executor):
""" Executor instance which always returns a Future completed with a
CancelledError exception. """
def submit(self, _, *args, **kwargs):
always_fail = Future()
always_fail.set_exception(CancelledError('Null executor always fails.'))
always_fail.set_exception(NullExecutorCancelled())
return always_fail

View file

@ -5,7 +5,7 @@ from hashlib import sha1
from concurrent.futures import ThreadPoolExecutor
from marketorestpython.client import MarketoClient
from util.asyncwrapper import AsyncExecutorWrapper, NullExecutor
from util.asyncwrapper import AsyncExecutorWrapper, NullExecutor, NullExecutorCancelled
logger = logging.getLogger(__name__)
@ -18,6 +18,8 @@ def build_error_callback(message_when_exception):
def maybe_log_error(response_future):
try:
response_future.result()
except NullExecutorCancelled:
pass
except Exception:
logger.exception('User analytics: %s', message_when_exception)