В асинхронных средах, threading.local
как гарантируют, больше не будет локален для контекста, потому что несколько контекстов могут сосуществовать в единственном потоке. Большинство асинхронных платформ (gevent, eventlet) обеспечивает a get_current_context()
функциональность для идентификации текущего контекста. Некоторое предложение путь к патчу обезьяны threading.local
таким образом, это локально для 'greenthreads' или других определенных для платформы контекстов. Я не могу найти такую функциональность в скрученной документации. Как я делаю это?
Я предполагаю, что вам нужен этот API для сохранения и получения состояния для каждого запроса. Если нет, то, возможно, вы захотите уточнить свой вопрос.
Twisted Web не предлагает никакого API в этом направлении.Поскольку вы полностью контролируете время существования запроса, вы можете сохранить любое состояние для каждого запроса самостоятельно: в экземплярах ресурса
, в локальных переменных, в аргументах для обратных вызовов и т. д. Функция get_current_context
является своего рода многопоточным эквивалентом использования глобальных переменных для отслеживания вашего состояния. Если вы подумаете об этом таким образом, то, надеюсь, станет более очевидным, почему вы можете рассмотреть альтернативные решения.