Y a-t-il des préoccupations que je devrais avoir un objet sur le stockage de verrouillage Python dans une session Beaker?

StackOverflow https://stackoverflow.com/questions/2794829

Question

Il y a une certaine page sur mon site où je veux éviter le même utilisateur de visiter deux fois de suite. Pour éviter cela, je prévois de créer un objet de verrouillage (de la bibliothèque de threads de Python). Cependant, il me faudrait stocker que toutes les sessions. Est-ce que je devrais faire attention lorsque vous essayez de stocker un objet de verrouillage dans une session (une session spécifique Beaker)?

Était-ce utile?

La solution

Enregistrement d'une instance de threading.Lock dans une session (ou nulle part ailleurs que la sérialisation des besoins) est une idée terrible, et sans doute vous aurez une exception si vous essayez de (car un tel objet ne peut pas être sérialisé, par exemple, il ne peut pas être pickled). Une approche traditionnelle pour la sérialisation coopérative des processus repose sur le verrouillage des fichiers (sur les fichiers « artificiels » par exemple dans un répertoire tel que /tmp/locks/<username> si vous voulez que le verrouillage soit par utilisateur, comme vous l'indiquez). Je crois que l'entrée de wikipedia fait un bon travail de décrire la zone générale; si vous nous dire quel OS vous utilisez l'ordre, nous pourrions suggérer (je ne crois pas malheureusement, il y a une solution multi-plateforme pour cela) plus spécifique quelque chose.

Autres conseils

Je viens de réaliser que c'était une terrible question depuis le verrouillage d'une serrure et il sauver la session prend deux étapes ainsi le but défaisant des actions atomiques de la serrure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top