2016-08-22 10 views
0

Я использую rq scheduler. Я хочу напомнить пользователям проверить их электронную почту после 2 минут и 10 минут. Поэтому я использую post_save сигнал для планирования этих задач. Я создал задачу так:Django rq scheduler не может поставить в очередь одну задачу дважды

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 минут. Любая помощь приветствуется.

ответ

1

Запуск первой задачи с дельтами 2 минуты, и когда она выполняется, она должна запустить другую с дельта 8 минут. Надеюсь, это поможет.

+0

Спасибо, но независимо от того, какая дельта я установил для второй задачи, она не выполняет функцию, которую она должна выполнять. P.S Я ждал 15 минут, потому что вторая почта еще не существует. – Kishan

+0

Да, я понимаю, я просто даю вам еще один шанс достичь такого же результата, не задумываясь, почему при выполнении задач сразу один не запускается. – turkus

+0

О, ладно. получилось, это означает, что я должен поместить свой второй «scheduler.enqueue» в свой метод send_verification_mail! Я попробую это Спасибо. – Kishan