Посты с тэгом zeromq


ZeroRPC — легкая, надежная библиотека для распределенной связи между серверами


Давече мне понадобилось реализовать некое подобие собственного statsd-like сервера сбора метрики, но с несколько узко-специфичными фичами, под которые без хорошего напильника не ложилось ни одно готовое или полуготовое решение. В связи в этим было решено реализовать простой клиент-сервер протокол на python с использованием tcp/udp soket'ов. Оговорюсь, что с сетевым программированием знаком я был, да и остаюсь постольку-поскольку, хотя общее понимание tcp/ip стека имелись. Решение в лоб на синтетике показало себя замечательно, но стоило мне нагрузить его более-менее реальными данными (всего-то порядка 20к сообщений в секунду с нескольких потоков) и оно начало показывать свои подводные камушки. Наверное, я просто не смог правильно приготовить raw сокеты, но задачу нужно было решить быстро, времени на глубокое понимание и изучение сетевого программирования не было, поэтому я начал искать решения, где за меня уже хотя бы половину придумали бы. Поиск меня привел к библиотеке Ze


Работа с ZeroMQ и PostgreSQL в asyncio


Наверное, все уже слышали о чудесной библиотеке asyncio?

Если нет, то коротко: эта либа стала стандартом на асинхронное сетевое программирование на Python. tornado и twisted или научатся с ней работать или постепенно уйдут в маргиналы.

asyncio прекрасна, но это просто библиотека для работы с TCP, UDP, UNIX сокетами, PIPES и асинхронным запуском subprocess.

Чтобы всем было здорово нужны сторонние библиотеки, умеющие работать с asyncio. Кое-что уже есть, но мало.

Вот я с коллегами и сделал пару: одну для ZeroMQ и другую для PostgreSQL

Если вы прочно сидите на Python 2 и не интересуетесь Python 3 — не ходите под кат во избежание глупых вопросов и прочих недоразумений.
Читать дальше →


Centrifuge набирает обороты

Привет!

Пару месяцев назад я опубликовал на Хабре статью, посвященную описанию open-source проекта Centrifuge. Напомню, что это сервер рассылки сообщений подключенным клиентам (в основном из веб-браузера) в реальном времени. Написан на Python.

С тех пор я продолжал работать над проектом в свободное время и сейчас готов поделиться накопившимися мыслями и изменениями.

Читать дальше →


[recovery mode] Centrifuge — брокер реал-тайм сообщений

Привет, Хабр!

В статье я опишу свой небольшой open-source проект — Centrifuge (далее Центрифуга). Это сервер на Python, задача которого — рассылка (broadcast) сообщений в реальном времени подключенным (в основном из браузера) клиентам.

Это будет история, наполненная как личными эмоциями, так и описанием используемых технологий, но без примеров кода. Если вам близка тема — не проходите мимо, будет любопытно.

Для начала, посмотрите, пожалуйста, скринкаст (не забудьте включить субтитры), если после просмотра интерес не пропадет, смело читайте дальше!


Читать дальше →



Разработка системы синхронизации в реальном времени с использованием SockJS, Django, Tornado и ZeroMQ

Не так давно, разрабатывая очередной программный продукт, наша команда разработчиков столкнулись с задачей реализации полноценной системы синхронизации пользовательских данных в реальном времени, путем рассылки (PUSH метод) изменений сервером. В самом приложении объем данных был не велик, но они могли просматриваться несколькими пользователями одновременно. Поэтому нам был необходим легковесный и достаточно производительный подход к синхронизации данных в рамках Веб-приложения. После того как были рассмотрены различные пути к решению этой задачи, мы остановили свой выбор на достаточно популярном эмуляторе WebSocket’ов – SockJS, который использует различные алгоритмы обмена данными между клиентом и сервером, в зависимости от браузера, которым пользуется клиент. В рамках данной статьи я не буду заострять внимание на том, почему был сделан именно такой выбор (по этому поводу написано немало статей, в том числе и на хабрахабре), а просто скажу, что мы ещё ни разу об этом не пожалели.



Вакансии: команда Python разработчиков в EVAplacer

Новая международная геоинформационная социальная сеть EVAplacer набирает команду разработчиков.


Ведущий разработчик серверной части на Python

Задачи

  • Разработка серверной части проекта на Python
  • Проектирование архитектуры системы и схемы базы данных
  • Организация взаимодействия серверной части проекта с клиентской
  • Принятие технических решений

Требования

  • Свежий опыт веб-разработки на Python без использования Django
  • Суммарный опыт веб-разработки от 5 лет
  • Самостоятельность и заинтересованность в качестве результата своей работы
  • Умение делегировать часть работы коллегам

Технологии

  • Предстоит работать со следующими технологиями:


Вакансии: команда Python разработчиков в EVAplacer

Новая международная геоинформационная социальная сеть EVAplacer набирает команду разработчиков.


Ведущий разработчик серверной части на Python

Задачи

  • Разработка серверной части проекта на Python
  • Проектирование архитектуры системы и схемы базы данных
  • Организация взаимодействия серверной части проекта с клиентской
  • Принятие технических решений

Требования

  • Свежий опыт веб-разработки на Python без использования Django
  • Суммарный опыт веб-разработки от 5 лет
  • Самостоятельность и заинтересованность в качестве результата своей работы
  • Умение делегировать часть работы коллегам

Технологии

  • Предстоит работать со следующими технологиями:


Вакансии: команда Python разработчиков в EVAplacer

Вакансии более не актуальны

Новая международная геоинформационная социальная сеть EVAplacer набирает команду разработчиков.

Ведущий разработчик серверной части на Python

Задачи

  • Разработка серверной части проекта на Python
  • Проектирование архитектуры системы и схемы базы данных
  • Организация взаимодействия серверной части проекта с клиентской
  • Принятие технических решений

Требования

  • Свежий опыт веб-разработки на Python без использования Django
  • Суммарный опыт веб-разработки от 5 лет
  • Самостоятельность и заинтересованность в качестве результата своей работы
  • Умение делегировать часть работы коллегам

Технологии

  • Предстоит работать со следующими технологиями:


Mongrel2

Если бы не Александр Соловьев, то я бы прошел мимо Mongrel2. А всё потому, что первый Mongrel был Ruby-специфичным инструментом и никогда особо меня не интересовал.

Другое дело Mongrel2. Во-первых, он написан на C. Во-вторых, он не привязан ни к какому из языков. В-третьих, он использует ZeroMQ как транспорт.

По сути, Mongrel2 это балансирующий прокси, который парсит http и отдает запросы в виде сообщений в ZeroMQ и так же получает ответы.

Mongrel2 интересен несколькими моментами.

Быстрый. Все операции по парсингу http (сам Mongrel2) и передачи сообщений (ZeroMQ) берет на себя быстрый C-код.

Не привязан к языкам По сути, всё что вам нужно, чтобы начать работать с mongrel - это биндинг к ZeroMQ, которые есть для всех более-менее мажорных языков. Так что используя любой