From f30d492164b12dc9bef52e4a558a59926429bf44 Mon Sep 17 00:00:00 2001 From: Calen Pennington <cale@edx.org> Date: Fri, 16 Oct 2020 11:00:43 -0400 Subject: [PATCH] Work around celery changes to class-based-task registration --- openedx/core/djangoapps/schedules/tasks.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/openedx/core/djangoapps/schedules/tasks.py b/openedx/core/djangoapps/schedules/tasks.py index 97be7059e5f..fb30694b537 100644 --- a/openedx/core/djangoapps/schedules/tasks.py +++ b/openedx/core/djangoapps/schedules/tasks.py @@ -97,6 +97,7 @@ class BinnedScheduleMessageBaseTask(ScheduleMessageBaseTask): for each Bin. """ num_bins = resolvers.DEFAULT_NUM_BINS + task_instance = None @classmethod def enqueue(cls, site, current_date, day_offset, override_recipient_email=None): @@ -117,7 +118,7 @@ class BinnedScheduleMessageBaseTask(ScheduleMessageBaseTask): override_recipient_email, ) cls.log_info(u'Launching task with args = %r', task_args) - cls().apply_async( + cls.task_instance.apply_async( task_args, retry=False, ) @@ -181,7 +182,9 @@ class ScheduleRecurringNudge(BinnedScheduleMessageBaseTask): def make_message_type(self, day_offset): return message_types.RecurringNudge(abs(day_offset)) -ScheduleRecurringNudge = current_app.register_task(ScheduleRecurringNudge()) +# Save the task instance on the class object so that it's accessible via the cls argument to enqueue +ScheduleRecurringNudge.task_instance = current_app.register_task(ScheduleRecurringNudge()) +ScheduleRecurringNudge = ScheduleRecurringNudge.task_instance class ScheduleUpgradeReminder(BinnedScheduleMessageBaseTask): @@ -193,7 +196,9 @@ class ScheduleUpgradeReminder(BinnedScheduleMessageBaseTask): def make_message_type(self, day_offset): return message_types.UpgradeReminder() -ScheduleUpgradeReminder = current_app.register_task(ScheduleUpgradeReminder()) +# Save the task instance on the class object so that it's accessible via the cls argument to enqueue +ScheduleUpgradeReminder.task_instance = current_app.register_task(ScheduleUpgradeReminder()) +ScheduleUpgradeReminder = ScheduleUpgradeReminder.task_instance class ScheduleCourseUpdate(BinnedScheduleMessageBaseTask): @@ -205,7 +210,9 @@ class ScheduleCourseUpdate(BinnedScheduleMessageBaseTask): def make_message_type(self, day_offset): return message_types.CourseUpdate() -ScheduleCourseUpdate = current_app.register_task(ScheduleCourseUpdate()) +# Save the task instance on the class object so that it's accessible via the cls argument to enqueue +ScheduleCourseUpdate.task_instance = current_app.register_task(ScheduleCourseUpdate()) +ScheduleCourseUpdate = ScheduleCourseUpdate.task_instance class ScheduleCourseNextSectionUpdate(ScheduleMessageBaseTask): @@ -213,6 +220,7 @@ class ScheduleCourseNextSectionUpdate(ScheduleMessageBaseTask): log_prefix = COURSE_NEXT_SECTION_UPDATE_LOG_PREFIX resolver = resolvers.CourseNextSectionUpdate async_send_task = _course_update_schedule_send + task_instance = None @classmethod def enqueue(cls, site, current_date, day_offset, override_recipient_email=None): @@ -231,7 +239,7 @@ class ScheduleCourseNextSectionUpdate(ScheduleMessageBaseTask): override_recipient_email, ) cls.log_info(u'Launching task with args = %r', task_args) - cls().apply_async( + cls.task_instance.apply_async( task_args, retry=False, ) @@ -247,7 +255,9 @@ class ScheduleCourseNextSectionUpdate(ScheduleMessageBaseTask): str(course_key), override_recipient_email, ).send() -ScheduleCourseNextSectionUpdate = current_app.register_task(ScheduleCourseNextSectionUpdate()) +# Save the task instance on the class object so that it's accessible via the cls argument to enqueue +ScheduleCourseNextSectionUpdate.task_instance = current_app.register_task(ScheduleCourseNextSectionUpdate()) +ScheduleCourseNextSectionUpdate = ScheduleCourseNextSectionUpdate.task_instance def _schedule_send(msg_str, site_id, delivery_config_var, log_prefix): -- GitLab