From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.2.5 Message-ID: <506EF52F.1090805@altlinux.ru> Date: Fri, 05 Oct 2012 16:56:47 +0200 From: "Peter V. Saveliev" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: sisyphus@lists.altlinux.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: [sisyphus] pyvfs package X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Oct 2012 14:54:11 -0000 Archived-At: List-Archive: List-Post: … Отправил в Сизиф (когда-нибудь, наверное, доползёт) пакет python-module-pyvfs. В двух словах, вдруг кому будет интересно. Первичной задачей было представление объектов петона в виде директорий и файлов на виртуальной ФС в целях мониторинга, отладки и т.п. Быстрый старт: допустимы вы имеете скрипт my_script.py и хотите понять, что происходит внутри него с объектами класса MyClass. Для этого достаточно следующего: from pyvfs.objectfs import export … @export class MyClass(object): … После этого достаточно запустить скрипт. Пока он будет работать, объекты класса MyClass будут доступны на виртуальной файловой системе. Как выбрать ФС и как её подключить: для простоты интеграции с существующими сервисами (разрабатывается она для отладки большого сурового демона на петоне) библиотека ориентируется на переменные окружения. PYVFS_PROTO — может быть 9p или fuse. Если протокол выбран 9p, в системе необходимо иметь python-module-py9p. ФС будет экспортирована по умолчанию по адресу 127.0.0.1:10001, подключить её можно с помощью команды # mount -t 9p -o ro,port=10001 127.0.0.1 /mnt Если протокол выбран fuse, файловая система автоматически будет *уже* смонтирована в директорию, указанную в переменной окружения PYVFS_MOUNTPOINT. Для работы протокола fuse нужно иметь в системе python-module-fuse. По окончанию работы не забудьте отмонтировать ФС (пока что библиотека этого автоматически не делает). … Плюсы: * Может использоваться для мониторинга структур без использования отладчиков, без установки брейкпойнтов и так далее. Библиотека не служит и не может служить заменой отладчикам, однако часто нужно всего лишь получить содержимое внутренних структур в рантайме. * Простота интеграции: всё, что надо, это добавить в любой код две строчки, одну на импорт, вторую для декорирования нужного класса. Если необходимо интегрировать с сервисом (у меня так mdns-сервер работает, например, показывая свою базу как ФС), то переменные окружения можно экспортировать в init-скрипте или где там теперь это модно делать, либо использовать значения по умолчанию. * В отличие от разных RPC API, позволяет работать простыми старыми средствами шелла. По моему опыту, оказалось очень полезной, даже несмотря на стадию пре-альфа. Минусы: * Некоторые заморочные случаи петонических структур, криво отображённые на файловую структуру, могут обрушить модуль VFS. А если ФС примонтирована, скажем, через системный mount, то дело может дойти до оопса. В продакшне я бы пока не рекомендовал использовать. Ну, только если до конца понимаете, что может случиться. * Пока что работает только на read-only. Но read-write режим запланирован на ближайшее будущее. В первом приближении он позволит менять значения имеющихся атрибутов (да хоть из shell-скриптов), во втором — создавать объекты. * Библиотека на довольно ранней стадии развития, это тоже вряд ли можно занести в плюсы. … Более подробно с переменными окружения и примерами использования можно ознакомиться здесь: http://peet.spb.ru/pyvfs/ … Ещё более подробно можно посмотреть в коде на гитхабе https://github.com/svinota/pyvfs или на git.alt. … Ya' welcome. Если кто будет использовать — буду рад фидбэку. -- Peter V. Saveliev