Установка и подключение¶
Установка¶
Требуется Python 3.12 или новее. Внешних зависимостей у библиотеки нет.
Где взять rac¶
rac — консольная утилита администрирования из поставки сервера
1С:Предприятия. Она лежит рядом с исполняемым файлом сервера:
Путь к rac передаётся в Client. Версия rac должна совпадать с версией
сервера: при расхождении RAC отвечает ошибкой «Различаются версии клиента и
сервера», и библиотека поднимает raclib.errors.IncorrectVersionError.
Подключение¶
import raclib as rc
client = rc.Client("/opt/1cv8/x86_64/8.3.24.1548/rac")
session = rc.Session(client, host="cluster.example.com", port=1545, timeout=30)
Session описывает одну пару host:port — то есть один сервер
администрирования. Для нескольких серверов создавайте несколько сессий; в
асинхронном режиме их удобно обходить через asyncio.gather.
Параметры сессии¶
| Параметр | Назначение | По умолчанию |
|---|---|---|
host |
хост сервера администрирования | localhost |
port |
порт сервера администрирования | 1545 |
timeout |
предел ожидания ответа в секундах | None (бесконечно) |
encoding |
кодировка вывода rac |
по платформе |
new_window |
показывать окно консоли (Windows) | False |
debug |
печатать argv и вывод rac |
False |
Всегда задавайте timeout
Без таймаута недоступный сервер администрирования подвесит вызывающий поток
навсегда. Для асинхронного режима это означает зависание всей задачи
asyncio.gather, а не только одного запроса.
Кодировка¶
rac.exe на Windows печатает в cp866, на Linux и macOS — в UTF-8. Библиотека
подбирает кодировку по платформе автоматически. Если сервер настроен иначе,
укажите кодировку явно — иначе русские ключи в выводе будут испорчены и разбор
не найдёт ни одного поля:
Проверка соединения¶
Самый дешёвый способ убедиться, что путь к rac, хост и порт верны:
import raclib as rc
session = rc.Session(
rc.Client("/opt/1cv8/x86_64/8.3.24.1548/rac"),
host="cluster.example.com",
timeout=10,
)
print(rc.Agent.version(session)) # версия агента и RAC
print(rc.Cluster.list(session))
Путь к rac проверяется при первом запуске команды, а не при создании
Client: можно собрать конфигурацию заранее, даже если каталог с 1С появится
позже. Если файл не найден, не исполняем или указывает на каталог — поднимается
raclib.errors.RACNotFoundError, и процесс не запускается.
Отладка¶
В debug-режиме печатаются argv команды, её вывод, а при ошибке — содержимое
stderr. Это самый быстрый способ понять, какая именно команда ушла в rac: