Найти - Пользователи
Полная версия: Tornado асинхронность
Начало » Web » Tornado асинхронность
1
chand
Привет. Никак не могу вехать в асинхронность торнадо, потому что с 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')
Но к сожалению все блокируется. Помогите пожалуйста.
reclosedev
Неблокирующий sleep в торнадо - это IOLoop.add_timeout(deadline, callback)

А если под
chand
сделать некоторые сложные манипуляции
понимается что-то больше чем таймаут, то тут уже нужно смотреть, что применить. Для некоторых баз данных есть асинхронные клиенты. Для остальных блокирующих операций придется придумывать что-то свое (например потоки, процессы). Или использовать асинхронную очередь задач (например http://celeryproject.org/).
chand
Спасибо!
Интересно посмотреть другие варианты, асинхронной разработки
chand
https://github.com/kmike/tornado-slacker/
И велосипедов не нужно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB