Django rq scheduler 不能将同一个任务排入队列两次
Django rq scheduler can not enqueue same task twice
我正在使用 rq scheduler。我想提醒用户在 2 分钟和 10 分钟后验证他们的电子邮件。所以我使用 post_save 信号来安排这些任务。我已经设置了这样的任务:
from datetime import timedelta
import django_rq
def send_verification_email(user):
"""Remind signed up user to verify email."""
if not user.is_email_verified:
context = get_email_context(user)
context['first_name'] = user.first_name
context['url'] = django_settings.ACTIVATION_URL.format(**context)
# below line sends email
VerifyEmailReminderNotification(user.email, context=context).send()
@receiver(post_save)
def remind_to_verify_email(sender, created, instance, **kwargs):
"""Send verify email for the new user."""
list_of_models = ('Person', 'Company')
scheduler = django_rq.get_scheduler("default")
if sender.__name__ in list_of_models:
if created:
scheduler.enqueue_in(timedelta(minutes=2), send_verification_email, instance)
# if I move below enqueue to "send_verification_email" method it will go to recursion.
scheduler.enqueue_in(timedelta(minutes=10), send_verification_email, instance)
问题是:我在 2 分钟后收到一封邮件,但在 10 分钟后没有收到第二封邮件。
任何帮助表示赞赏。
运行 第一个任务有 2 分钟的增量,当它执行时,它应该 运行 另一个有 8 分钟增量的任务。希望对您有所帮助。
我正在使用 rq scheduler。我想提醒用户在 2 分钟和 10 分钟后验证他们的电子邮件。所以我使用 post_save 信号来安排这些任务。我已经设置了这样的任务:
from datetime import timedelta
import django_rq
def send_verification_email(user):
"""Remind signed up user to verify email."""
if not user.is_email_verified:
context = get_email_context(user)
context['first_name'] = user.first_name
context['url'] = django_settings.ACTIVATION_URL.format(**context)
# below line sends email
VerifyEmailReminderNotification(user.email, context=context).send()
@receiver(post_save)
def remind_to_verify_email(sender, created, instance, **kwargs):
"""Send verify email for the new user."""
list_of_models = ('Person', 'Company')
scheduler = django_rq.get_scheduler("default")
if sender.__name__ in list_of_models:
if created:
scheduler.enqueue_in(timedelta(minutes=2), send_verification_email, instance)
# if I move below enqueue to "send_verification_email" method it will go to recursion.
scheduler.enqueue_in(timedelta(minutes=10), send_verification_email, instance)
问题是:我在 2 分钟后收到一封邮件,但在 10 分钟后没有收到第二封邮件。 任何帮助表示赞赏。
运行 第一个任务有 2 分钟的增量,当它执行时,它应该 运行 另一个有 8 分钟增量的任务。希望对您有所帮助。