Frage

Ich habe eine Website mit einem Kontaktformular. Benutzer sendet Namen, E-Mail und die Nachricht und die Website E-Mails mir die Details.

In sehr seltenen Fällen mein Server hat ein Problem damit E-Mail-System ist und so erhält der Anwender einen Fehler und diese Kontaktdaten verloren. (Sagen Sie nicht,: einen besseren Server, jeder Server kann E-Mail jetzt nach unten haben geht und dann, und wir haben eine Menge Einreichungen bekommen).

Ich mag ein System implementieren, der die Benutzerdetails, wenn die E-Mail-Funktion mit einem Fehlercode zurückgibt Senden speichern könnte. Dann auf jede weitere Vorlage, überprüfen Sie alle gespeicherten Eingaben und versuchen, sie mir zu schicken.

Aber wie die Daten gespeichert werden?

Ich verwende Python, damit ich über die Verwendung gedacht shelve (einzelne Datei halb -Datenbank). Vielleicht könnte jemand ein besseres Datenformat vorschlagen? (Ich glaube, tun Sie eine vollständige Datenbanklösung zu viel des Guten wäre.)

Das Problem, das ich mit einem einzigen Datei Ansatz sehen ist Rennbedingungen . Zwei oder mehr gescheiterte E-Mails zur gleichen Zeit zwei Änderungen an die Datendatei verursachen würden in Datenkorruption resultierenden

Also, was zu tun? Multi-Datei-Lösung, das Sperren von Dateien oder etwas anderes?

War es hilfreich?

Lösung

Wenn wir E-Mail-Senden-Funktionalität in unserer Umgebung implementieren wir es in einer entkoppelten Weise tun. So würde beispielsweise ein Benutzer ihre Daten vorlegen, die in einer Datenbank gespeichert bekommen würden. Wir haben dann einen separaten Dienst, der ausgeführt wird, fragt die Datenbank und E-Mail sendet. Auf diese Weise, wenn es überhaupt keine E-Mail-Server-Probleme, wird der Dienst nur versuchen Sie es später erneut, Daten und das Vertrauen der Nutzer sind nie verloren.

Andere Tipps

SQLite . Es hat standardmäßig Python-Bindings in der Standardbibliothek und soll für einen geeigneten Grad an Belastung arbeiten (oder so wie ich höre)

Sie könnten, wie vorgeschlagen, verwenden Sie SQLite dafür. Die zentrale Frage lautet: Wie mans ist „eine Menge Beiträge“? Ich kann es unterhalb von wenigen pro Sekunde dies funktionieren würde. Andernfalls wird die Datenbankdatei die ganze Zeit gesperrt werden, und Sie haben ein anderes Problem.

Aber man könnte es aber auch schlicht halten, dumm und einfach: Schreiben von Dateien auf der Festplatte. Für jede sumission wird eine Datei in einem temporären Verzeichnis geschrieben (wenn der Mail-Server ist unten). Dann fügen Sie ein paar Zeilen an den Mail-Server-Startskript, das das Verzeichnis liest und Mails sendet. Keine Datenbanken, keine Probleme mit dem Sperren und wenn Sie ein Verzeichnis für das eine Quote (oder einen RAM-Disk mit fester Größe) eingestellt ist, sollten Sie nicht auf Probleme stoßen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top