Запуск модуля через планировщик

Вопросы связанные с работой ГИС Аксиома
Ответить
Аватара пользователя
bgnik
Пользователь
Сообщения: 84
Зарегистрирован: 25 окт 2021, 08:40

Запуск модуля через планировщик

Сообщение bgnik » Сегодня, 04:48

Как можно запускать свой модуль (плагин) в уже запущенной Аксиоме по расписанию в планировщике?
Аватара пользователя
gisamap
Пользователь
Сообщения: 566
Зарегистрирован: 18 окт 2019, 11:03

Re: Запуск модуля через планировщик

Сообщение gisamap » Сегодня, 09:38

Добрый день.
На мой взгляд проще написать на axipy приложение и уже его запускать в планировщике.
bgnik писал(а): Сегодня, 04:48 Как можно запускать свой модуль (плагин) в уже запущенной Аксиоме по расписанию в планировщике?
Аватара пользователя
Александр
Администратор
Сообщения: 807
Зарегистрирован: 18 апр 2019, 11:21

Re: Запуск модуля через планировщик

Сообщение Александр » Сегодня, 11:35

Понятие «планировщик» в вашем вопросе можно трактовать двояко, поэтому решение зависит от того, что именно вы имеете в виду. Два возможных сценария.

1. Если нужно выполнять задачи внутри уже работающей программы.
Когда ГИС Аксиома уже запущена, и вам требуется выполнять действия вашего модуля через определенные промежутки времени, использовать внешний системный планировщик не нужно. Вместо этого следует воспользоваться встроенными используя PySide2.
Для реализации расписания внутри программы применяется таймер (класс QTimer из библиотеки PySide6). В коде вашего модуля вы создаете этот таймер, задаете ему интервал срабатывания и подключаете к нему функцию, которую необходимо выполнять. Пока программа открыта, таймер будет автоматически вызывать нужные действия.

2. Если нужно управлять программой из внешнего системного планировщика.
Если же вы имеете в виду системный планировщик задач операционной системы (например, Планировщик заданий Windows), который должен подавать команды в уже запущенный процесс ГИС Аксиома, то напрямую «подхватить» и запустить плагин из внешней программы не получится.
В таком случае потребуется организовать межпроцессное взаимодействие. Для этого могут применяться например, сетевые сокеты, именованные каналы или разделяемая память. Ваш модуль в Аксиоме будет ожидать сигналы извне, а внешний планировщик отправлять их для запуска задач. Организовать это несколько сложнее, поэтому, скорее всего, для вашей задачи подойдет первый вариант с внутренним таймером.
Ответить