После прочтения этой темы и обсуждения в IRC, ответ выглядит следующим образом: держитесь подальше от тем . Извините за повторение этого вопроса, я намерен углубиться в тему, не принимая ответ «нить зла», с надеждой найти общее решение.
РЕДАКТИРОВАТЬ: Просто скажите "Нет" объединенному злу блокировок, взаимоблокировок, гранулярности блокировок, живых блокировок, недетерминированности и условий гонки. - Гидо ван Россум
Я занимаюсь разработкой веб-приложения на Python, и я хотел бы создать глобальный объект для каждого пользователя, который доступен только текущему пользователю . (например, запрошенный URI)
Предлагаемый способ - обойти объект, что делает IMO более сложным для поддержки приложения, а не красивый код, если мне нужно одно и то же значение в разных местах (некоторые могут быть сторонними плагинами).
Я вижу, что многие популярные фреймворки (Django, CherryPy, Flask) используют поточные блокировки Python для решения этой проблемы.
Если все эти фреймворки идут вразрез с Pythonic и чувствуют необходимость создать глобально доступный объект, это означает, что сообществу нужны такие вещи. И я тоже.
Является ли "лучший" способ передавать объекты вокруг?
Является ли единственным альтернативным решением использовать «злые» потоки?
Будет ли Pythonic хранить эту информацию в базе данных или в memcached?
Заранее спасибо!