¿Hay alguna preocupación que debería tener sobre el almacenamiento de un objeto de bloqueo Python en una sesión del cubilete?
-
04-10-2019 - |
Pregunta
Hay una cierta página en mi sitio web donde quiero evitar que el mismo usuario de visitar dos veces en una fila. Para evitar esto, tengo la intención de crear un objeto de bloqueo (de librería de hilos de Python). Sin embargo, necesitaría para almacenar que a través de sesiones. ¿Hay algo que deba tener en cuenta al tratar de almacenar un objeto de bloqueo en una sesión (en concreto una sesión del cubilete)?
Solución
El almacenamiento de una instancia threading.Lock en una sesión (o en cualquier otro lugar que las necesidades de serialización) es una idea terrible, y es de suponer que obtendrá una excepción si se intenta (ya que un objeto no puede ser serializado, por ejemplo, no puede ser pickle
d). Un enfoque tradicional para la serialización de los procesos de cooperación se basa en archivo de bloqueo (en archivos "artificiales" por ejemplo, en un directorio como /tmp/locks/<username>
si desea que el bloqueo sea por usuario, como usted indica). Creo que la entrada de la Wikipedia hace un buen trabajo de describir el área general; si nos qué sistema operativo que estés orden de marcha decir, podríamos sugerir algo más específico (por desgracia no creo que hay una solución multiplataforma para esto).
Otros consejos
Me he dado cuenta de que esta era una pregunta terribles ya que el bloqueo de una cerradura y guardarlo en la sesión de toma dos pasos anulando así el propósito de acciones atómicas de la cerradura.