summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2017-12-09 19:27:49 +0200
committerAlex Grönholm <alex.gronholm@nextday.fi>2017-12-09 19:30:47 +0200
commit7794f56fe10a40664f8ac9efba839c4fff797e6d (patch)
treef4f92d4f01e85426b3d6020383104934957abddc
parent0a85a0a1375271929d6f708ae74fab59a4b5c04a (diff)
downloadapscheduler-7794f56fe10a40664f8ac9efba839c4fff797e6d.tar.gz
Fixed traceback or its frames not being available for logger.exception()
-rw-r--r--apscheduler/executors/base.py7
-rw-r--r--tests/test_executors.py9
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