Pull to refresh

Comments 10

Интересный фреймворк!
Код коннектора можно адаптировать и под diesel.io, это не слишком сложно.
Но у diesel.io есть зависимости, которые тормозят поддержку Python 3, есть смысл посмотреть в сторону asyncio
Спасибо, очень хорошая статья и полезный коннкектор.
А можете рассказать отличия 1.6 протокола от 1.5? Хочу вместе с nodejs использовать, но есть только библиотека для 1.5, которая не взлетает на 1.6 — придется дописать. А что конкретно нужно изменить мне не сильно понятно? Легче заново написать или там не многое менять?
Принципы остались те же, но протокол существенно поменялся.
Сам протокол описан вот здесь:

tarantool.org/doc/dev_guide/box-protocol.html

Теперь для работы с сервером нужен msgpack.
BTW а что вы 1.6 то его назвали — у вас же совсем брат тарантула получился. Если бы он был 2.0 это бы быстрее пояснило как это я так зашел через год в тарантул и там не осталось ничего знакомого :)
На первый взгляд всё достаточно сложно и запутанно

После 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».

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.