Есть ли какие-либо проблемы, у меня должны хранить объект блокировки Python в сеансе стаканов?

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

Вопрос

На моем сайте есть определенная страница, где я хочу помешать тому же пользователю посещать его дважды подряд. Чтобы предотвратить это, я планирую создать объект блокировки (из библиотеки потоков Python). Однако мне нужно будет хранить это через сеансы. Есть ли что-нибудь, к чему я должен следить за тем, чтобы при попытке хранить объект блокировки в сеансе (в частности, сеанс стакана)?

Это было полезно?

Решение

Хранение экземпляра Threading.lock в сеансе (или где-нибудь еще, что требуется сериализация), является ужасной идеей, и предположительно вы получите исключение, если вы попытаетесь (поскольку такой объект не может быть сериализован, например, он не может быть pickleг). Традиционный подход к кооперативной сериализации процессов опирается на Блокировка файла (на «искусственных» файлах, например, в каталоге, таком как /tmp/locks/<username> Если вы хотите, чтобы блокировка была в соответствии с пользователем, как вы указываете). Я считаю, что запись Википедии делает хорошую работу по описанию общей области; Если вы говорите нам, какую ОС вы запускаете заказ, мы можем предложить что-то более конкретное (к сожалению, я не верю, что для этого есть кроссплатформенный раствор).

Другие советы

Я только что понял, что это был ужасный вопрос, поскольку блокировка блокировки и сохранение его на сессию, требует двух шагов, таким образом побеждая цель атомных действий блокировки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top