2010-05-17 15 views
5

En entornos asíncronos, threading.local ya no garantiza que sea contextual, ya que varios contextos pueden coexistir dentro de un único hilo. La mayoría de los marcos asíncronos (gevent, eventlet) proporcionan una funcionalidad get_current_context() para identificar el contexto actual. Algunos ofrecen una forma de parche de mono threading.local por lo que es local a 'hilos verdes' u otros contextos específicos del marco. No puedo encontrar tal funcionalidad en la documentación retorcida. ¿Cómo hago esto?threading.local equivalent for twisted.web?

Respuesta

3

Supongo que quiere esta API para guardar y recuperar el estado por solicitud. Si no es así, es posible que desee aclarar su pregunta.

Twisted Web no ofrece ninguna API en esta línea. Dado que usted tiene el control durante toda la vida útil de la solicitud, es posible para que usted almacene cualquier estado por solicitud usted mismo: en Resource instancias, en locales, en argumentos para devoluciones de llamadas, etc. Una función get_current_context es una especie de multi-hilo equivalente al uso de globales para realizar un seguimiento de su estado. Cuando lo piensas de esa manera, con un poco de suerte es un poco más obvio por qué deberías considerar soluciones alternativas.