2017-05-04 4 views
-1

Es gibt eine Chat-App, die die Nachricht an meinen Server übertragen kann, weil ich den gesamten Nachrichtensatz auf meinem eigenen Server speichern möchte. Grundsätzlich die chattende App Nachrichten an die bestimmte URL senden, und ich benutze Django, um sie zu speichern, ich habe es bereits getan, ich benutze eine Funktion namens save_message(request), um sie zu speichern (nur die Nachrichten in eine Textdatei schreiben).Wie kann sichergestellt werden, dass eine Funktion nur einmal in einem Zeitraum aufgerufen wird?

Und jetzt möchte ich ein Programm auf dem Server schreiben, die mir eine E-Mail senden kann, wenn die Nachricht an den Server kommt, ich habe es auch getan, ich verwende eine Funktion namens send_email(), um es zu tun.

Allerdings ist das Problem, ich möchte E-Mail senden regelmäßig.

Zum Beispiel:

  • Wenn der Server 1000 Meldungen in 2 Stunden erhält, ich möchte nur eine erhalten email.That zu sagen ist, wird diese E-Mail, sobald die erste Nachricht empfangen wird gesendet werden, und für den Rest von 2 Stunden, ob es neue Nachrichten gibt, werde ich keine Nachrichten erhalten.
  • Wenn der Server keine Nachrichten in 2/4/8/... Stunden erhält, dann werde ich keine E-Mails erhalten.

Ich denke, jedes Mal der Server-Nachricht empfängt, es save_message(request) aufrufen muss, und ich denke, auch die send_email() Aufruf im Körper save_message(request) sein sollte, ich weiß nicht, wie diese Anrufung in bestimmten Zeit überspringen. Ist es möglich, es zu tun?

Vielen Dank im Voraus!

+1

Schreiben Sie eine Funktion namens send_email_if_desired. Es prüft, ob die letzte Mail> 2h gesendet wurde, und wenn dies der Fall ist, send_email. – Brandin

Antwort

1

Verwendung django-crontab und geben Sie die Zeit in der setting.py für die fucntion Sie nach ausführen möchten, wie viel Zeit

+0

Danke, es hilft – Jiahao

Verwandte Themen