Commit 9d545eca by Eric Fischer

update_course_in_cache exception handler cleanup

parent c1cf4e78
...@@ -2,14 +2,22 @@ ...@@ -2,14 +2,22 @@
Asynchronous tasks related to the Course Blocks sub-application. Asynchronous tasks related to the Course Blocks sub-application.
""" """
import logging import logging
from capa.responsetypes import LoncapaProblemError
from celery.task import task from celery.task import task
from django.conf import settings from django.conf import settings
from edxval.api import ValInternalError
from lxml.etree import XMLSyntaxError
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from xmodule.modulestore.exceptions import ItemNotFoundError
from openedx.core.djangoapps.content.block_structure import api from openedx.core.djangoapps.content.block_structure import api
log = logging.getLogger('edx.celery.task') log = logging.getLogger('edx.celery.task')
# TODO: TNL-5799 is ongoing; narrow these lists down until the general exception is no longer needed
RETRY_TASKS = (ItemNotFoundError, TypeError, ValInternalError)
NO_RETRY_TASKS = (XMLSyntaxError, LoncapaProblemError, UnicodeEncodeError)
@task( @task(
default_retry_delay=settings.BLOCK_STRUCTURES_SETTINGS['BLOCK_STRUCTURES_TASK_DEFAULT_RETRY_DELAY'], default_retry_delay=settings.BLOCK_STRUCTURES_SETTINGS['BLOCK_STRUCTURES_TASK_DEFAULT_RETRY_DELAY'],
...@@ -22,9 +30,14 @@ def update_course_in_cache(course_id): ...@@ -22,9 +30,14 @@ def update_course_in_cache(course_id):
try: try:
course_key = CourseKey.from_string(course_id) course_key = CourseKey.from_string(course_id)
api.update_course_in_cache(course_key) api.update_course_in_cache(course_key)
except NO_RETRY_TASKS as exc:
log.info("update_course_in_cache encountered unrecoverable error: {}".format(exc))
raise
except RETRY_TASKS as exc:
log.info("update_course_in_cache encounted expected error, retrying.")
raise update_course_in_cache.retry(args=[course_id], exc=exc)
except Exception as exc: # pylint: disable=broad-except except Exception as exc: # pylint: disable=broad-except
# TODO: TNL-5799, check splunk logs to narrow down the broad except above log.info("update_course_in_cache encounted unknown error. Retry #{}, Exception: {}".format(
log.info("update_course_in_cache. Retry #{} for this task, exception: {}".format(
update_course_in_cache.request.retries, update_course_in_cache.request.retries,
repr(exc) repr(exc)
)) ))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment