Merge pull request #2642 from jakedt/nullexecutor

Handle null executor cancellations separately from other exceptions
This commit is contained in:
Jake Moshenko 2017-05-15 13:49:49 -04:00 committed by GitHub
commit 5aa3f37c90
2 changed files with 9 additions and 2 deletions

View file

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

View file

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