Ich habe einen seltsamen Fehler mit Django-Sitzungen in meiner App: einige Male (ca. 10 mal für ~ 20000 pro Tag) Sitzungsinformationen für Benutzer gelöscht wird. Ich habe es über Protokolldateien verfolgt: auf Seite A gibt es Informationen für die Sitzung des Benutzers, nachdem er das Formular übermittelt und auf der nächsten Seite seine Sitzung leer ist. Ich habe zwei Arten von Speicher versucht: memcached + db und db nur und dieses Problem gilt für beide. Ich habe versucht, diese Szenarien zu reproduzieren, aber alles funktioniert wie erwartet, es passiert sehr selten. Ich habe auch überprüft, dass dieses Problem für verschiedene Benutzer existiert, und für sie wird nicht jedes Mal reproduziert. Ich habe keine Ideen, wie ich die Ursache herausfinden kann und ich weiß nicht, was sonst noch hier als Beschreibung steht. Wenn jemand Ideen hat, lass es mich wissen. Wenn es wichtig ist, verwende ich meine App mit django 1.2 + FastCGI. Danke!Schwieriges Problem mit Django-Sitzungen: manchmal Sitzungsinformationen gelöscht
UPD: Ich überprüfte und sehe, dass Sitzungsschlüssel von Verwendungen nicht während zwei sequenziellen Anforderungen geändert wird, auf erste Anforderung gibt es einen tatsächlichen Sitzungszustand, und in der zweiten Sitzung Variablen mit leer zurückgesetzt werden.
Verwenden Sie ein Javascript, das eine gleichzeitige Anfrage erstellen kann, damit beide die Sitzung ändern können? – hynekcer
@hynekcer, keine Sitzungen werden in Aufrufen von JS nicht aktualisiert. – dbf
Sind Sie sicher, dass Sie Multithreading in FastCGI nicht verwenden? (Wenn Sie FCGI_MAX_CONNS = 1, FCGI_MAX_REQS = 1, FCGI_MPXS_CONNS = 0 setzen, können Sie sicher sein, nur einzelne Threads zu verwenden, unabhängig davon, welche Fastcgi-Implementierungen Sie verwenden: [FastCGI-Spezifikation] (http://www.fastcgi.com/drupal/node/6? q = node/22)) Dann empfehle ich, die Prozess-ID zu protokollieren, um zu sehen, ob sie nur durch denselben Prozess oder nur durch einen anderen Prozess gelöscht werden kann. (Verwenden Sie "% (process) d" in der Protokollformat-Zeichenfolge oder die "os.getpid()" -Funktion.) – hynekcer