diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2017-12-09 19:27:49 +0200 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2017-12-09 19:30:47 +0200 |
commit | 7794f56fe10a40664f8ac9efba839c4fff797e6d (patch) | |
tree | f4f92d4f01e85426b3d6020383104934957abddc | |
parent | 0a85a0a1375271929d6f708ae74fab59a4b5c04a (diff) | |
download | apscheduler-7794f56fe10a40664f8ac9efba839c4fff797e6d.tar.gz |
Fixed traceback or its frames not being available for logger.exception()
-rw-r--r-- | apscheduler/executors/base.py | 7 | ||||
-rw-r--r-- | tests/test_executors.py | 9 |
2 files changed, 8 insertions, 8 deletions
diff --git a/apscheduler/executors/base.py b/apscheduler/executors/base.py index 6ed1ec3..4c09fc1 100644 --- a/apscheduler/executors/base.py +++ b/apscheduler/executors/base.py @@ -126,6 +126,9 @@ def run_job(job, jobstore_alias, run_times, logger_name): except BaseException: exc, tb = sys.exc_info()[1:] formatted_tb = ''.join(format_tb(tb)) + events.append(JobExecutionEvent(EVENT_JOB_ERROR, job.id, jobstore_alias, run_time, + exception=exc, traceback=formatted_tb)) + logger.exception('Job "%s" raised an exception', job) # This is to prevent cyclic references that would lead to memory leaks if six.PY2: @@ -135,10 +138,6 @@ def run_job(job, jobstore_alias, run_times, logger_name): import traceback traceback.clear_frames(tb) del tb - - events.append(JobExecutionEvent(EVENT_JOB_ERROR, job.id, jobstore_alias, run_time, - exception=exc, traceback=formatted_tb)) - logger.exception('Job "%s" raised an exception', job) else: events.append(JobExecutionEvent(EVENT_JOB_EXECUTED, job.id, jobstore_alias, run_time, retval=retval)) diff --git a/tests/test_executors.py b/tests/test_executors.py index d4aa221..06cd9ba 100644 --- a/tests/test_executors.py +++ b/tests/test_executors.py @@ -13,9 +13,9 @@ from apscheduler.job import Job from apscheduler.schedulers.base import BaseScheduler try: - from unittest.mock import Mock, MagicMock + from unittest.mock import Mock, MagicMock, patch except ImportError: - from mock import Mock, MagicMock + from mock import Mock, MagicMock, patch @pytest.fixture @@ -138,8 +138,9 @@ def test_run_job_memory_leak(): raise Exception('dummy') fake_job = Mock(Job, func=func, args=(), kwargs={}, misfire_grace_time=1) - for _ in range(5): - run_job(fake_job, 'foo', [datetime.now(UTC)], __name__) + with patch('logging.getLogger'): + for _ in range(5): + run_job(fake_job, 'foo', [datetime.now(UTC)], __name__) foos = [x for x in gc.get_objects() if type(x) is FooBar] assert len(foos) == 0 |