Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2012 14:46:39

chand
Зарегистрирован: 2012-05-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Tornado асинхронность

Привет. Никак не могу вехать в асинхронность торнадо, потому что с 15 лет, страдаю на пхп головного мозга и синхронность, как побочный эффект. Что мне нужно сделать. Обработать гет запрос и сделать некоторые сложные манипуляции, которые будут блокировать loop, для примера возьмем sleep (10). В тот момент я хочу обработать все другие запросы, которые будут поступать на сервер.
Вот что я сейчас имею.

class TestHandler(tornado.web.RequestHandler, ThreadableMixin):
    def _worker(self):
        print 'test'
        time.sleep(10)
        self.finish(self.res)
    @tornado.web.asynchronous
    def get(self):
        tornado.ioloop.IOLoop.instance().add_callback(self.async_callback(self._worker))
        self.render('template/chat.html')
Но к сожалению все блокируется. Помогите пожалуйста.

Офлайн

#2 Июнь 2, 2012 15:50:12

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Tornado асинхронность

Неблокирующий sleep в торнадо - это IOLoop.add_timeout(deadline, callback)

А если под

chand
сделать некоторые сложные манипуляции
понимается что-то больше чем таймаут, то тут уже нужно смотреть, что применить. Для некоторых баз данных есть асинхронные клиенты. Для остальных блокирующих операций придется придумывать что-то свое (например потоки, процессы). Или использовать асинхронную очередь задач (например http://celeryproject.org/).

Офлайн

#3 Июнь 2, 2012 21:43:47

chand
Зарегистрирован: 2012-05-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Tornado асинхронность

Спасибо!
Интересно посмотреть другие варианты, асинхронной разработки

Офлайн

#4 Июнь 5, 2012 15:40:57

chand
Зарегистрирован: 2012-05-15
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

Tornado асинхронность

https://github.com/kmike/tornado-slacker/
И велосипедов не нужно

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version