Pregunta

I usar Python 2.6.6, pymongo 1,9, mongodb 1.6.5, Ubuntu 10.10

Tengo extraño problema con el comando FindAndModify.

I tienen dos proceso idéntico funcionando al mismo tiempo. Consiguen registros de db con FindAndModify (implementos algún tipo de cola).

Así que para hacer ese registro get sólo un proceso que hago esto:

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

Esto funciona así:

1 utilización proceso findAndModify para conseguir trabajo 2 Proceso de usar findAndModify para conseguir trabajo 1 proceso de trabajo de marca y guardar el resultado 2 Proceso de trabajo de marca y guardar el resultado

Así registro de proceso GET con el estado "cargado" y cambiarlo a "analizando". Y si esta operación es atómica segundo proceso no debe verse este registro, ya que no satisface consulta.

Sin embargo, a veces dos proceso de conseguir uno mismo registro al mismo tiempo, y esto es un problema.

puedes decir a nadie por eso que es sucede y cómo puedo aplicar la cola con mongodb que bloquee los documentos de ser la lectura de más de un proceso?

Gracias.

¿Fue útil?

Solución

Mientras estaba tratando de reproducir este error en la escritura independiente, encontró que el problema no estaba en MongoDB. MongoDB trabaja como se ha dicho en el manual, por lo que la pregunta está cerrado ahora.

Para Thous quien encontró mismo error -. No se olvide de comprobar otros hilos / procedimientos de modificación de datos de la cola en tiempo de ejecución

Otros consejos

Se puede utilizar la instantánea = True bandera para evitar que este tipo de duplicados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top