Frage

Ich verwende Python 2.6.6, pymongo 1.9, mongodb 1.6.5, Ubuntu 10.10

Ich habe seltsames Problem mit FindAndModify Befehl.

Ich habe zwei identischer Prozess zur gleichen Zeit ausgeführt werden. Sie bekommen Aufzeichnungen von db mit FindAndModify (implementiert eine Art Warteschlange).

, so dass nur ein Prozess get Datensatz machen ich dies tun:

find_and_modify({query:{"status":"loaded"},update:{"$set": {"status":"analyzing"}}) 

Das funktioniert so:

1 Prozess Verwendung findAndModify Job zu bekommen 2 Prozess verwendete findAndModify Job zu bekommen 1 Prozess make Job und speichert Ergebnis 2 Prozess make Job und speichert Ergebnis

So Prozess get Datensatz mit dem Status „geladen“ und ändern Sie ihn auf „Analyse“. Und wenn dieser Vorgang Atom zweiter Prozess ist, sollte diese Platte nicht gesehen, weil sie nicht erfüllen Abfrage.

Aber manchmal zwei Verfahren ein und denselben Datensatz zur gleichen Zeit bekommen, und das ist Problem.

Kann mir jemand sagen, warum es passiert und wie ich Warteschlange mit mongodb implementieren kann, die der Übermittlung von Dokumenten Lesen von mehr als einem Prozess verriegelt?

Danke.

War es hilfreich?

Lösung

Während versucht, diesen Fehler im Standalone-Skript zu reproduzieren, festgestellt, dass Problem war nicht in MongoDB. MongoDB arbeitet, sagte, wie in Handbuch, so dass die Frage jetzt geschlossen ist.

Für die gleichen Fehler Tsd gefunden -. Vergessen Sie nicht, einen anderen Threads / Prozesse zum Modifizieren von Warteschlangendaten zur Laufzeit prüfen

Andere Tipps

Sie können den Snapshot verwenden = True Flag bekommen diese Art von Dubletten zu vermeiden.

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