Commit 4cc758da by Kevin Luo

Add retry loop to delegate_email for getting CourseEmail

Revert hardcoded delay for course_email task
parent 72f09cf3
...@@ -37,6 +37,19 @@ def delegate_email_batches(hash_for_msg, recipient, course_id, course_url, user_ ...@@ -37,6 +37,19 @@ def delegate_email_batches(hash_for_msg, recipient, course_id, course_url, user_
log.error("get_course_by_id failed: " + exc.args[0]) log.error("get_course_by_id failed: " + exc.args[0])
raise Exception("get_course_by_id failed: " + exc.args[0]) raise Exception("get_course_by_id failed: " + exc.args[0])
email = None
retries = 0
while email is None:
try:
email = CourseEmail.objects.get(hash=hash_for_msg)
except CourseEmail.DoesNotExist as exc:
if retries < 3:
retries += 1
time.sleep(5)
else:
log.error("Failed to get CourseEmail with hash " + hash_for_msg + ", no workers fired.")
return 0
if recipient == "myself": if recipient == "myself":
recipient_qset = User.objects.filter(id=user_id).values('profile__name', 'email') recipient_qset = User.objects.filter(id=user_id).values('profile__name', 'email')
else: else:
...@@ -63,7 +76,7 @@ def delegate_email_batches(hash_for_msg, recipient, course_id, course_url, user_ ...@@ -63,7 +76,7 @@ def delegate_email_batches(hash_for_msg, recipient, course_id, course_url, user_
for i in range(num_workers): for i in range(num_workers):
to_list = recipient_list[i * chunk:i * chunk + chunk] to_list = recipient_list[i * chunk:i * chunk + chunk]
course_email.apply_async(args=[hash_for_msg, to_list, course.display_name, course_url, False], countdown=10) course_email.delay(hash_for_msg, to_list, course.display_name, course_url, False)
return num_workers return num_workers
......
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