So geben Sie Daten zwischen Anforderungen in Tornado Web frei

8

Ich habe den folgenden Anwendungsfall für meinen Tornado-Webserver:

Nach POST-Anfragen können Einträge auf dem Server vorgenommen werden, die nicht in einer Datei oder Datenbank gespeichert werden. Bei GET-Anfragen kann ein Prozess gestartet oder beendet werden.

Daher muss ich Daten zwischen verschiedenen Anfragen in meiner RequestHandler Implementierung teilen. Was ist der normale Weg?

Ich hatte Schwierigkeiten beim Speichern von Daten in self , zum Beispiel self.entry = "..." . In einer anderen Anfrage waren die Daten nicht mehr vorhanden.

Die einzige funktionierende Lösung, die ich gefunden habe, ist diese im Anwendungsobjekt zu speichern:

%Vor%

und

%Vor%

Ist das der richtige Weg? Und was ist mit Synchronisation hier? Ich meine, das bedeutet Zugriff auf geteilte Daten.

    
RevMoon 02.09.2012, 22:30
quelle

4 Antworten

15

Ich schlage folgendes vor: Statt eines Datenbankzugriffsobjekts übergeben Sie ein Objekt, das Ihre Daten speichert, zum Beispiel:

%Vor%

mit der folgenden RequestHandler Initialisierungsmethode.

%Vor%

Sie müssen das Objekt vorher erstellen und übergeben, andernfalls wird es jedes Mal neu erstellt, wenn eine Anfrage bearbeitet wird.

    
Konrad Reiche 03.09.2012, 11:32
quelle
6

Die Dokumentation bietet eine Möglichkeit, dies zu tun:

%Vor%

Dann können Sie Ihr Objekt mydatabase in einer Datei speichern.

Aber ich bin mir nicht sicher, ob dies der richtige Weg ist, um das zu erreichen, was Sie bezüglich der Synchronisation zwischen Anfragen wünschen.

    
pintoch 03.09.2012 07:20
quelle
1

Anwendung ist das richtige Objekt, um (semi-) persistente Daten zu speichern. Wie auf anderen Seiten empfohlen, sollten Sie jedoch eine Art Datenbank zum Speichern dieser Daten verwenden.

Sie sollten jedoch darauf achten, dass eine Sitzung (oder Transaktion) nicht ordnungsgemäß beendet wird (zB wenn Sie einen POST, aber keinen GET auslösen), sollten Sie die Sitzungsdaten löschen, um Ihren Webserver nicht zu haben Leckspeicher.

Aus meiner Erfahrung schlage ich vor, Redis zu verwenden, da es einfach zu verwenden ist und Schlüsselablauf , ein Mechanismus, der nützlich ist, wenn Sie Sitzungsdaten verwalten müssen.

    
oDDsKooL 03.09.2012 06:43
quelle
0

Sie können memcached für so etwas verwenden. Sie müssen jedoch den memcached-Server einrichten.

Ссылка

    
monkut 03.09.2012 05:31
quelle

Tags und Links