Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

7 Декабрь 2021, 19:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как организовать использование кода и его поддержку  (Прочитано 588 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ost
Форумчанин
***
Offline Offline

Сообщений: 229


« Стартовое сообщение: 24 Август 2021, 18:17 »

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

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

Спасибо.
« Последнее редактирование: 24 Август 2021, 19:36 от ost » Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 590


WWW
« Ответ #1: 24 Август 2021, 19:16 »

Сделать расширение?
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 568


« Ответ #2: 24 Август 2021, 20:08 »

То что работает по сети для нескольких юзеров называется микросервисом и 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
Форумчанин
***
Offline Offline

Сообщений: 229


« Ответ #3: 25 Август 2021, 08:24 »

Спасибо за, как всегда, развернутый ответ. Попробую реализовать первый вариант.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!