Ich verwende rq scheduler. Ich möchte Nutzer daran erinnern, ihre E-Mails nach 2 Minuten und 10 Minuten zu bestätigen. Also benutze ich post_save Signal, um diese Aufgaben zu planen. Ich habe Aufgabe wie folgt aufgebaut:Django rq Scheduler kann dieselbe Aufgabe nicht zweimal in die Warteschlange stellen
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)
Problem ist: Ich eine Mail nach 2 Minuten immer bin aber nicht zweite Mail nach 10 Minuten. Jede Hilfe wird geschätzt.
Danke, aber was auch immer Delta für die zweite Aufgabe eingestellt ist es führt nicht die Funktion, die es soll. P. Ich wartete 15 Minuten für die zweite Mail immer noch nicht da. – Kishan
Ja, ich verstehe, ich gebe Ihnen nur eine andere Option, um das gleiche Ergebnis zu erzielen, ohne zu überlegen, warum, wenn Sie Aufgaben gleichzeitig ausführen, nicht ausgeführt wird. – turkus
Oh okay. hab ich meinen du solltest meine zweite "scheduler.enqueue" in meine send_verification_mail Methode schreiben! Ich werde das versuchen Danke. – Kishan