Comments 28
На скриншоте, внезапно, Свидетель О_о
Если в курсе про Cyclone, есть вопрос: сильно ли Cyclone отстает от Tornado по фичам и производительности? Не пробовал ни то, ни другое, хочу Cyclone мне нравится гораздо больше из-за использования отделимого event loop
— Циклон бегает на Twisted.
— Нативная поддержка xmprpc и jsonrpc.
— Встроенная поддержка редиса
— Незначительно медленнее торнады.
github.com/fiorix/cyclone#readme
Торнада уже давно является стабильным продуктом, который используется в реальных проектах и я не вижу смысла начинать с циклона.
— Нативная поддержка xmprpc и jsonrpc.
— Встроенная поддержка редиса
— Незначительно медленнее торнады.
github.com/fiorix/cyclone#readme
Торнада уже давно является стабильным продуктом, который используется в реальных проектах и я не вижу смысла начинать с циклона.
Собственно, ваш первый аргумент решающий. В пользу циклона. И да, оно не «нативное» и не «встроенное», а обусловлено использованием twisted, для которого реализованы эти протоколы. Cyclone — просто реализация ещё одного протокола http. И даже при незначительном отставании в производительности я выберу его из-за интероперабельности и следования unix-way, если мне не подскажут других проблем с Cyclone :)
А зачем вам websockets если у вас как я понял flash клиент?
В ff4 не могу карты увидеть, в хроме норм. Линукс.
или включите websockets в ff4 (что более предпочтительно), или установите свежий flash на него. галочка соединения слева сверху должна гореть зеленым. (в у нее в title можно увидеть используется ws native или flash emulation)
Даешь отдельный блог Tornado!
Шикарные показатели производительности!
Позвольте поинтересоваться, как вы производили нагрузочное тестирование?
Позвольте поинтересоваться, как вы производили нагрузочное тестирование?
Гроздья в твистед? Не умеете готовить — не хайте. Даже в jquery поняли, что deferred это круто, но создатели торнадо гордые олени.
В том то и дело что умеем. Опыт плотной работы с twisted около 5 лет. Если вы прочитаете статью внимательнее, вы поймете что серебрянной пули (кто бы сомневался) в очередной раз нет, и нужен выбор между несколькими моделями обработки событий. tornado этот выбор дает просто и эффективно. twisted в общем-то тоже дает, но он тянет за собой изрядный кус слоя совместимости, и все получается гораздо более громоздко и неочевидно, да еще и лишними зависимостями.
А почему вы решили, что я читал ее невнимательно? И потом — что такое «лишние зависимости»? Gnome? KDE? Что такое «изрядный кус слоя совместимости»? В чем громоздкость?
Вы изложите конкретно, раз уж вы реверанс в сторону твистед сделали — хаете, хайте аргументировано.
А пока пяти лет опыта незаметно.
Вы изложите конкретно, раз уж вы реверанс в сторону твистед сделали — хаете, хайте аргументировано.
А пока пяти лет опыта незаметно.
Пробовали tasklet/eventlet/gevent? Как они в сравнении с торнадо?
Насчет ThreadableMixin что-то пугает стартовать треды на каждый start_worker()… Может все-же пул завести и очередь?
Вот последние пару недель задумывался над следующим вопросом — как мне из main thread в которой крутится event_loop и слушаются сокеты передать задание воркеру (воркер в отдельном потоке) и получить обратно от него результат не выполняя callback в треде воркера?
Пока в голову приходит только 2 очереди. Одна очередь для передачи данных от main_thread к воркерам и вторая для передачи данных от воркеров к main_thread. Причем main_thread проверяет поступили ли к ней данные в очередь на каждом обороте EventLoop в неблокирующем режиме и если поступили — обрабатывает. Единственная проблема — проверять поступление данных в очередь нужно как можно чаще, соответственно придется делать холостые обороты в EventLoop…
Собственно вопрос — может ли worker_thread как-то добавлять свои события в EventLoop?
Вот последние пару недель задумывался над следующим вопросом — как мне из main thread в которой крутится event_loop и слушаются сокеты передать задание воркеру (воркер в отдельном потоке) и получить обратно от него результат не выполняя callback в треде воркера?
Пока в голову приходит только 2 очереди. Одна очередь для передачи данных от main_thread к воркерам и вторая для передачи данных от воркеров к main_thread. Причем main_thread проверяет поступили ли к ней данные в очередь на каждом обороте EventLoop в неблокирующем режиме и если поступили — обрабатывает. Единственная проблема — проверять поступление данных в очередь нужно как можно чаще, соответственно придется делать холостые обороты в EventLoop…
Собственно вопрос — может ли worker_thread как-то добавлять свои события в EventLoop?
1. мне больше gevent нравиться.
2. А разве от websockets не отказались (из-за проблем с уязвимостью)? Они вроде сейчас включены по умолчанию только в Chrome.
2. А разве от websockets не отказались (из-за проблем с уязвимостью)? Они вроде сейчас включены по умолчанию только в Chrome.
if hasattr(self, 'res'):
self.finish(self.res)
Этот код при любом запросе ajax или get/post просто сделает редирект на страницу, к которой был сделан запрос, отобразив self.res в окне браузера, вместо того чтобы вернуть переменную инициатору запроса.
> Увы и ах. Всеми любимый nginx не умеет проксировать websocket протокол.
В новой версии уже может. Поправьте пожалуйста.
В новой версии уже может. Поправьте пожалуйста.
Так и не поправили — Nginx и Websockets
Sign up to leave a comment.
Многопоточное приложение под Tornado