2012-04-23 4 views
2

Предоставляет ли Tornado какие-либо гарантии о том, сколько запросов одновременно обрабатывается одним RequestHandler? Я думаю об управлении данными сессии, как это:Как создать потокобезопасный обработчик запросов с Python Tornado

class MyHandler(tornado.web.RequestHandler): 
    def prepare(self): 
    self.session = load_session_from_memcached 

    def get(self): 
    # work with self.session 

    def on_finish(self): 
    save_session_to_memcached(self.session) 

Но это будет работать только если self.session в get() так же, как self.session в prepare(). И это будет только так, если один RequestHandler обрабатывает не более одного запроса одновременно. Так работает Торнадо?

ответ

9

RequestHandler s создаются в соответствии с запросом. Экземпляр обработчика один запрос будет обслуживать один и только один запрос в своей жизни


Edit:

Вот ссылка на ту часть документации, которая подтверждает мое утверждение выше: http://www.tornadoweb.org/documentation/overview.html#overriding-requesthandler-methods

Престола Пункт 1: Новый объект RequestHandler создается по каждому запросу

+0

Спасибо! Я получил подобный ответ от списка рассылки пользователей Tornado, но SO не позволил мне ответить на мой собственный вопрос. –

+0

Эта ссылка в настоящее время устарела (ну, во всяком случае, сломалась - я не достаточно хорошо знаком с Торнадо, чтобы сказать, не теряя времени). – Greg