Gibt es irgendwelche Bedenken, die ich über das Speichern eines Python-Lock-Objekt in einem Becherglas Sitzung haben sollte?

StackOverflow https://stackoverflow.com/questions/2794829

Frage

Es gibt eine bestimmte Seite auf meiner Website, wo ich von dem gleichen Benutzer verhindern mag, dass es zweimal hintereinander zu besuchen. Um dies zu verhindern, plane ich ein Lock-Objekt zu erstellen (aus Python threading-Bibliothek). Allerdings würde ich müssen speichern, dass über mehrere Sitzungen hinweg. Gibt es etwas, ich achten soll beim Versuch, ein Sperrobjekt in einer Sitzung zu speichern (genauer gesagt eine Beaker Sitzung)?

War es hilfreich?

Lösung

eine threading.Lock Instanz in einer Sitzung speichern (oder sonstwo, dass Bedürfnisse Serialisierung) ist eine schreckliche Idee, und vermutlich werden Sie eine Ausnahme, wenn Sie versuchen, (da ein solches Objekt nicht serialisiert werden kann, zum Beispiel, kann es nicht werden pickled). Ein traditioneller Ansatz für kooperative Serialisierung von Prozessen beruht auf Dateisperren (auf „künstliche“ Dateien zB in ein Verzeichnis wie /tmp/locks/<username>, wenn Sie die Verriegelung wollen pro-Benutzer sein, wie Sie angeben). Ich glaube, der Wikipedia-Eintrag macht einen guten Job den allgemeinen Bereich zu beschreiben; wenn Sie uns sagen, was OS Sie Auftrag ausführen, könnten wir etwas speziellere vorschlagen (leider glaube ich nicht, es ist eine plattformübergreifende Lösung für diese).

Andere Tipps

Ich habe erkannt, dass dies eine schreckliche Frage war eine Sperre, da Sperren und an die Sitzung zu speichern nimmt zwei Schritte somit den Zweck des Schlosses atomaren Aktionen zu besiegen.

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