2016-04-27 10 views
1

Es gibt ein Ereignis, nach dem kommt Feedback auf meinem Server. Ich muss eine Nachricht genau eine Stunde nach dem Ereignis senden.Node.js: lange Verzögerung

Ich kann eine setTimeout() verwenden, aber es scheint, es wird nicht gut sein.

Vielleicht wäre es besser, wenn ich cron beginnen, die den Status eines Ereignisses aus der Datenbank (zB jede Minute) prüfen wird

Kennt jemand eine größere gute Option für die Durchführung eines solchen langen Verzögerung?

+0

Persönlich würde ich 'cron' für diesen Zweck verwenden. Markieren Sie alle x Minuten und behalten Sie die Zeitstempel für Aktionen in Ihrer Datenbank bei. – Flux

+0

Ich sehe keine Probleme mit setTimeout(). Bitte erklären Sie, warum es nicht gut wäre? – teroi

+0

@teroi falls der Server neu gestartet wird, wird der Befehl nicht ausgeführt – Lola

Antwort

2

Wenn Sie 100% Zuverlässigkeit benötigen, verwenden Sie einen Cron-Job. Das Problem bei einem Cron-Job ist, dass der Code überall verteilt wird und jedes Mal, wenn Sie einen neuen Server einrichten, eine Konfiguration erfordert. Ein alternativer Ansatz wäre die Verwendung eines npm-Pakets wie cron.

Das Problem mit setTimeout() ist, dass, wenn Ihre Anwendung abstürzt/neu startet der zukünftige Funktionsaufruf verloren gehen wird. Jedes Mal, wenn Ihre Anwendung gestartet wird, kann sie jedoch die Datenbank abfragen und alle fehlenden Zeitüberschreitungen sehen und sie entsprechend einstellen.

+0

Danke für deine Antwort, ich bin geneigt zum Cron und du hast meine Zweifel zerstreut – Lola