cron: log and capture exceptions, do not create logged errors (#88783) #1323

Merged
fpeters merged 1 commits from wip/88783-cron-capture-exception into main 2024-03-29 08:40:15 +01:00
2 changed files with 29 additions and 1 deletions

View File

@ -526,6 +526,32 @@ def test_cron_command_rewind_jobs(settings, freezer):
assert sorted(jobs) == ['job1', 'job2', 'job3']
def test_cron_command_job_exception(settings):
create_temporary_pub()
def job1(pub, job=None):
raise Exception('Error')
@classmethod
def register_test_cronjobs(cls):
cls.register_cronjob(CronJob(job1, name='job1', days=[10]))
get_publisher().set_tenant_by_hostname('example.net')
sql.mark_cron_status('done')
with mock.patch('wcs.publisher.WcsPublisher.register_cronjobs', register_test_cronjobs):
get_publisher_class().cronjobs = []
clear_log_files()
call_command('cron', job_name='job1', domain='example.net')
assert get_logs('example.net') == [
'start',
"running jobs: ['job1']",
'exception running job job1: Error',
]
clean_temporary_pub()
def test_clean_afterjobs():
pub = create_temporary_pub()

View File

@ -16,6 +16,7 @@
import datetime
import os
import sys
import time
from contextlib import contextmanager
@ -128,4 +129,5 @@ def cron_worker(publisher, since, job_name=None):
with job.log_long_job():
job.function(publisher, job=job)
except Exception as e:
publisher.record_error(exception=e, context='[CRON]', notify=True)
job.log(f'exception running job {job.name}: {e}')
publisher.capture_exception(sys.exc_info())