diff --git a/commerce_coordinator/apps/lms/tasks.py b/commerce_coordinator/apps/lms/tasks.py index 85407a84..94bf619d 100644 --- a/commerce_coordinator/apps/lms/tasks.py +++ b/commerce_coordinator/apps/lms/tasks.py @@ -35,7 +35,7 @@ def on_failure(self, exc, task_id, args, kwargs, einfo): error_message = ( json.loads(exc.response.text).get('message', '') - if isinstance(exc, RequestException) and exc.response is not None + if isinstance(exc, RequestException) and exc.response is not None and getattr(exc.response, "text", '') else str(exc) ) @@ -46,11 +46,14 @@ def on_failure(self, exc, task_id, args, kwargs, einfo): f"order number: {order_number}, and course title: {course_title}" ) - # This error is returned from LMS if the course mode is unsupported - # https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/enrollments/views.py#L870 - course_mode_expired_error = "course mode is expired or otherwise unavailable for course run" + # These errors can be either returned from LMS enrollment API or can be due to connection timeouts. + fulfillment_error_messages = [ + "course mode is expired or otherwise unavailable for course run", + "Read timed out.", + "Service Unavailable" + ] - if course_mode_expired_error in error_message: + if any(err_msg in error_message for err_msg in fulfillment_error_messages): logger.info( f"Sending unsupported course mode fulfillment error email " f"for the user with user ID: {edx_lms_user_id}, email: {user_email}, "