Как организовать использование кода и его поддержку

Автор ost, 24 августа 2021, 18:17

0 Пользователи и 1 гость просматривают эту тему.

ost

Доброго.
Насоветуйте, пож., как наиболее эффективно обеспечить исполнение на нескольких машинах (не более 10-15) одного и того же  python-кода применительно к LO и его дальнейшую поддержку.
Ситуация, думаю, типичная: несколько пользователей, имеющие доступ к общему сетевому ресурсу, должны запускать один и тот же код, передавая в него для обработки индивидуальные значения параметров и индивидуальные данные, получая в ответ результаты работы кода с этими индивидуальными данными.
Как вообще по-правильному решаются вопросы "расшаривания" кода для совместного использования? Уже сейчас понятно (на примере 5 машин), что встраивание кода в файл каждого пользователя чревато глупой тратой времени на изменение (в случае доработки) одного и того же кода на каждой из пяти машин, где он используется.
Интересует больше код Python для LO.

Первая мысль: вместо "UserInstallation=$SYSUSERCONFIG/LibreOffice/4" файла "bootstrap.ini" в "..\<installed>\program" написать что-нибудь типа "UserInstallation=file:///<СетевойДиск>:/CommonSettings"
Надо ли? Как правильно? Будет ли при этом доступен пользователям код Python из "<СетевойДиск>:\CommonSettings\user\Scripts\python"?

Спасибо.

Yakov


economist

То что работает по сети для нескольких юзеров называется микросервисом и Python в этом плане очень успешен. Обычно это делается так:

1) локально у юзеров хранится "стартер" типа
start.py:
import sys
sys.path.append(<path>)
import my_dir_module_lib as ml # грузим из <path> по сети
ml.run() # дальше работают методы из сетевой либы

2) весь изменяемый код хранится в my_dir_module_lib и правится вами напрямую на сетевом ресурсе. Т.к. pytho-код интерпретируемый - он отлично ложится и диффится на github, gitlab, dokuwiki или просто куда угодно с контролем версий. Я использовал dokuwiki для построчного сравнения изменений и предоставления доступа к отчетам (там все хранится в txt, есть удобный вики-механизм отката итд)

3) если нужно чтобы код был одним и тем же в разных офисах, не имеющих VPN-коннекта - можно использовать Я.Диск и др. папки синхронизации  

4) если какая-то часть обработки общая для всех - можно написать daemon-сервис (отдельный py-файл), который можно сделать системным (неубиваемым) сервисом. Такой нужен, например, в конторе с 1С, из которой кто ни попадя выгружает черти что на сетевой диск в формате TXT(TSV) или xls, а демон на Python - понимает что это, обрабатывает его и кладет в БД SQLite, pickle-консерву итд, для сетевого использования. Даемон работает очень надежно, и даже если его кто-то завалит невалидным выводом (например 1С умеет такое время давать проводкам закрытия месяца 24:00:16) - винда/лин перезапустят его и все остальные смогут пользоваться микросервисом через пяток секунд.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

ost

Спасибо за, как всегда, развернутый ответ. Попробую реализовать первый вариант.