Comments 10
Ещё бы коннектор для этого фреймворка www.diesel.io/ :-)
Спасибо, очень хорошая статья и полезный коннкектор.
А можете рассказать отличия 1.6 протокола от 1.5? Хочу вместе с nodejs использовать, но есть только библиотека для 1.5, которая не взлетает на 1.6 — придется дописать. А что конкретно нужно изменить мне не сильно понятно? Легче заново написать или там не многое менять?
Принципы остались те же, но протокол существенно поменялся.
Сам протокол описан вот здесь:
tarantool.org/doc/dev_guide/box-protocol.html
Теперь для работы с сервером нужен msgpack.
Сам протокол описан вот здесь:
tarantool.org/doc/dev_guide/box-protocol.html
Теперь для работы с сервером нужен msgpack.
На первый взгляд всё достаточно сложно и запутанно
После Tornado всё очень естественно. К слову Tornado умеет работать поверх Asyncio.
Хотя вроде event loop в Tornado быстрее чем у Asyncio.
По сложности сравнивал именно с gevent, в нем event loop, как таковой — спрятан. Вызовы, в которых происходит переключение между гринлетами, остаются в неизменном виде. С Tornado не сравнивал, но было бы интересно узнать разницу по бенчмаркам.
gevent очень костыльно устроены, и вроде как прекратили своё развитие.
Явные бенчмарки и мне интересны.
Явные бенчмарки и мне интересны.
Попробовал сравнить с Tornado, именно в стиле «Coroutines and concurrency».
Код коннектора для Tornado (прототип) можно посмотреть здесь.
К сожалению в стабильной ветке Tornado, Event Loop не богат concurrency-фичами, такими как Event или Condition.
Поэтому, коннектор и бенчмарк будет работать только на Tornado «4.2.dev1».
Код бенчмарка похож на asyncio.
Результаты бенчмарка:
insert — 30.270719
select — 28.614258
update — 29.975998
delete — 30.612288
Это заметно медленнее asyncio, возможно на callbacks будет быстрее, но совсем не хочется использовать этот стиль.
Yappi-профайлер показывает, что много времени тратится на вызовы tornado.gen, пруф. здесь.
При этом, за бенчмарк было сделано 5K вызовов read/write в tornado.iostream, что неплохо, по-сравнению с синхронным подходом.
Из плюсов можно отметить, что сам инстанс Tarantool расходует на порядок меньше CPU.
Код коннектора для Tornado (прототип) можно посмотреть здесь.
К сожалению в стабильной ветке Tornado, Event Loop не богат concurrency-фичами, такими как Event или Condition.
Поэтому, коннектор и бенчмарк будет работать только на Tornado «4.2.dev1».
pip install git+https://github.com/tornadoweb/tornado.git
Код бенчмарка похож на asyncio.
Результаты бенчмарка:
insert — 30.270719
select — 28.614258
update — 29.975998
delete — 30.612288
Это заметно медленнее asyncio, возможно на callbacks будет быстрее, но совсем не хочется использовать этот стиль.
Yappi-профайлер показывает, что много времени тратится на вызовы tornado.gen, пруф. здесь.
При этом, за бенчмарк было сделано 5K вызовов read/write в tornado.iostream, что неплохо, по-сравнению с синхронным подходом.
Из плюсов можно отметить, что сам инстанс Tarantool расходует на порядок меньше CPU.
Sign up to leave a comment.
Асинхронная работа с Tarantool на Python