2013-06-06 2 views
0

Я работаю над проектом, который использует объекты Twisted web, но не высокоуровневую веб-инфраструктуру. Как получить доступ к экземпляру HTTPChannel (скрученный), который создал определенный экземпляр http.Request?Доступ к каналу из экземпляра http.Request в Twisted

Я вижу, что конструктор http.Request имеет канал в качестве аргумента, но не существует метода/свойства, который к нему будет обращаться.

Кроме того, пока я могу получить доступ к экземпляру HTTPFactory с канала через свойство factory - могу ли я получить доступ к фабрике непосредственно из экземпляра запроса?

ответ

1

Похоже, что канал доступен непосредственно на Request. Рассмотрим Request.__init__:

def __init__(self, channel, queued): 
    """                                  
    @param channel: the channel we're connected to.                       
    @param queued: are we in the request queue, or can we start writing to                 
     the transport?                              
    """ 
    self.notifications = [] 
    self.channel = channel 
    self.queued = queued 
    ... 

self.channel = channel, кажется, только то, что вы ищете.

+0

Да, это похоже на класс оболочки, который я использую. Но, может быть, есть причина, почему он не доступен сразу? – vonPetrushev

+0

Я не понимаю этот комментарий. Это 'twisted.web.http.Request .__ init__', а не класс-оболочка. На нем есть атрибут «channel». Я не знаю, что значит «недоступный сразу». –

+0

Ну, с повторной реализацией конструктора вы создаете оболочку для запроса, который будет использоваться вместо первоначальной реализации. «недоступен сразу» - это означает, что при первоначальной реализации запроса вы не можете получить доступ к каналу с экземпляром. – vonPetrushev

Смежные вопросы