Prevent high mem usage in generate_course_overview.
This commit is contained in:
@@ -54,4 +54,4 @@ class Command(BaseCommand):
|
||||
except InvalidKeyError:
|
||||
raise CommandError('Invalid key specified.')
|
||||
|
||||
CourseOverview.get_select_courses(course_keys, force_update=options.get('force_update'))
|
||||
CourseOverview.update_select_courses(course_keys, force_update=options.get('force_update'))
|
||||
|
||||
@@ -487,9 +487,10 @@ class CourseOverview(TimeStampedModel):
|
||||
return json.loads(self._pre_requisite_courses_json)
|
||||
|
||||
@classmethod
|
||||
def get_select_courses(cls, course_keys, force_update=False):
|
||||
def update_select_courses(cls, course_keys, force_update=False):
|
||||
"""
|
||||
Returns CourseOverview objects for the given course_keys.
|
||||
A side-effecting method that updates CourseOverview objects for
|
||||
the given course_keys.
|
||||
|
||||
Arguments:
|
||||
course_keys (list[CourseKey]): Identifies for which courses to
|
||||
@@ -498,8 +499,6 @@ class CourseOverview(TimeStampedModel):
|
||||
whether the requested CourseOverview objects should be
|
||||
forcefully updated (i.e., re-synched with the modulestore).
|
||||
"""
|
||||
course_overviews = []
|
||||
|
||||
log.info('Generating course overview for %d courses.', len(course_keys))
|
||||
log.debug('Generating course overview(s) for the following courses: %s', course_keys)
|
||||
|
||||
@@ -507,7 +506,7 @@ class CourseOverview(TimeStampedModel):
|
||||
|
||||
for course_key in course_keys:
|
||||
try:
|
||||
course_overviews.append(action(course_key))
|
||||
action(course_key)
|
||||
except Exception as ex: # pylint: disable=broad-except
|
||||
log.exception(
|
||||
'An error occurred while generating course overview for %s: %s',
|
||||
@@ -517,8 +516,6 @@ class CourseOverview(TimeStampedModel):
|
||||
|
||||
log.info('Finished generating course overviews.')
|
||||
|
||||
return course_overviews
|
||||
|
||||
@classmethod
|
||||
def get_all_courses(cls, orgs=None, filter_=None):
|
||||
"""
|
||||
|
||||
@@ -450,13 +450,14 @@ class CourseOverviewTestCase(ModuleStoreTestCase):
|
||||
unmodified_overview = CourseOverview.get_from_id(course.id)
|
||||
self.assertEqual(unmodified_overview.version, 11)
|
||||
|
||||
def test_get_select_courses(self):
|
||||
def test_update_select_courses(self):
|
||||
course_ids = [CourseFactory.create().id for __ in range(3)]
|
||||
select_course_ids = course_ids[:len(course_ids) - 1] # all items except the last
|
||||
self.assertEqual(
|
||||
{course_overview.id for course_overview in CourseOverview.get_select_courses(select_course_ids)},
|
||||
set(select_course_ids),
|
||||
)
|
||||
with mock.patch(
|
||||
'openedx.core.djangoapps.content.course_overviews.models.CourseOverview.get_from_id'
|
||||
) as mock_get_from_id:
|
||||
CourseOverview.update_select_courses(select_course_ids)
|
||||
self.assertEquals(mock_get_from_id.call_count, len(select_course_ids))
|
||||
|
||||
def test_get_all_courses(self):
|
||||
course_ids = [CourseFactory.create(emit_signals=True).id for __ in range(3)]
|
||||
|
||||
Reference in New Issue
Block a user