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