threading.local, эквивалентный для twisted.web?

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

6
задан user242486 17 May 2010 в 11:43
поделиться

1 ответ

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

Twisted Web не предлагает никакого API в этом направлении.Поскольку вы полностью контролируете время существования запроса, вы можете сохранить любое состояние для каждого запроса самостоятельно: в экземплярах ресурса , в локальных переменных, в аргументах для обратных вызовов и т. д. Функция get_current_context является своего рода многопоточным эквивалентом использования глобальных переменных для отслеживания вашего состояния. Если вы подумаете об этом таким образом, то, надеюсь, станет более очевидным, почему вы можете рассмотреть альтернативные решения.

3
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: