Вступление: Ключевым элементом всех тулстеков для Xen является xenstore — сервис, позволяющий иметь «общую БД» для всех доменов на хосте. Давным-давно существует библиотека libxs для доступа к ней из приложений на Си. К ней есть биндинг на питоне (xen.lowlevel.xs), однако, у него есть очень серьёзные проблемы с многопоточной подпиской на события. Нас это не устраивало и для работы нашего сервиса memory on demand была написана библиотека pyxs, которая позволяет иметь очень комфортную работу с xenstore, многопоточные подписки и т.д.
По здравому размышлению было принято решение отдать её людям под LGPL-лицензией.
Второй важный класс — это Monitor для организации подписки на множественные изменения, ради которого всё писалось:
Нас разбудит каждый раз, когда что-то поменяется в первом ИЛИ втором пути.
Сссылка на гитхабе: github.com/selectel/pyxs
Документация: pyxs.readthedocs.org
По здравому размышлению было принято решение отдать её людям под LGPL-лицензией.
Примеры использования
Простое чтение и запись:from pyxs import Client xs=Client(): xs["/foobar/a"] = "baz" print xs["/foobar/a"]
Второй важный класс — это Monitor для организации подписки на множественные изменения, ради которого всё писалось:
from pyxs import Monitor xs=Monitor(): xs.watch("/local/domain/1") xs.watch("/local/domain/2") while true: print xs.wait()
Нас разбудит каждый раз, когда что-то поменяется в первом ИЛИ втором пути.
Сссылка на гитхабе: github.com/selectel/pyxs
Документация: pyxs.readthedocs.org