2017-06-08 3 views
-1

Ich arbeite an einer Django Web App. Die App enthält Nachrichten, die nach einer bestimmten Zeit automatisch gelöscht werden. Ich verwende timezone.now() als Sendezeit und der Benutzer gibt timedelta ein, um die Nachricht bis anzuzeigen. Ich überprüfe, ob die Nachricht sich selbst löschen soll, indem überprüft wird, ob die aktuelle Zeit nach der Sendezeit plus dem Zeitdelta ist. Wird dies den Server stark belasten? Wie oft wird es automatisch überprüft? Gibt es eine Möglichkeit, dass ich es einmal pro Minute überprüfe (oder sonst die Frequenz einstellen kann)?So stellen Sie eine geringere Serverlast in Django sicher

Dank

Antwort

1

Wie wird es häufig automatisch überprüfen?

wer ist "es"? Wenn du "den Django-Prozess" meinst, wird es selbst nichts überprüfen. Sie müssen entweder einen Cronjob oder eine asynchrone Warteschlange verwenden, um "tote" Nachrichten zu entfernen.

Gibt es eine Möglichkeit, dass ich es einmal pro Minute überprüfen kann (oder sonst die Frequenz einstellen)?

Nun ja, siehe oben. Cronjobs sind die einfachste Lösung, Async-Warteschlangen (wie Sellerie) sind viel schwerer, aber wenn Sie eine Menge "Off-Band" -Verarbeitung haben (Prozesse, die Sie aus dem Anfrage/Antwort-Zyklus starten wollen, ABER außerhalb davon ausführen), dann es ist der Weg zu gehen.

Wird dieser Server stark belastet?

Es ist total unmöglich, dies zu beantworten. Es hängt von Ihren genauen Modellen ab, wie Sie den "check & clean" -Code und natürlich die Datenmengen schreiben. Aber entweder mit einem Cronjob oder einer Async-Warteschlange wird dies nicht innerhalb des Django-Serverprozesses selbst ausgeführt und kann sogar auf einem anderen Server laufen, solange er auf die Datenbank zugreifen kann. IOW die Last wird in der Datenbank meistens sein (naja, auf dem Server läuft der Prozess natürlich auch, aber bei der Beschreibung Ihres Problems sollte eine einfache SQL-Lösch-Anfrage ausreichen).

Verwandte Themen