#OrchestratorDaemonPrototype(OnlyStartProcess)

dev-linux
Ivan Maslov 6 years ago
parent 3b0a636f03
commit 1220717cd1

@ -17,3 +17,6 @@ sys.stdin.read() (Ждет конец строки EOF)
Нужно научиться конверить все строки в коды символов, чтобы небыло ложных срабатываний
.encode("zlib_codec")
.decode("zlib_codec")
Стандартизированный формат даты для JSON (от JS) - учет часового пояса производится отдельно тк JS хранит все даты в UTC
2012-04-23T18:25:43.511Z

@ -0,0 +1,36 @@
import subprocess
import json
import datetime
import time
import codecs
#Чтение конфигурации
lDaemonConfigurationFile = codecs.open("robotDaemonConfiguration.json", "r","utf_8_sig")
lDaemonConfigurationJSONString = lDaemonConfigurationFile.read()
#Закрыть файловый объект
lDaemonConfigurationFile.close()
#Преобразование в JSON
lDaemonConfigurationObject=json.loads(lDaemonConfigurationJSONString)
#Инициализация настроечных параметров
lDaemonLoopSeconds=lDaemonConfigurationObject["loopSeconds"]
lDaemonProcessCodeProcessDict={}
lCurrentDateTime=datetime.datetime.now()
#Вечный цикл
while True:
#Циклический обход правил
for lItem in lDaemonConfigurationObject["activityList"]:
#Определить вид активности
if lItem["activityType"]=="processStart":
#Вид активности - запуск процесса
#Сформировать временной штамп, относительно которого надо будет проверять время
#часовой пояс пока не учитываем
lActivityDateTime=datetime.datetime.strptime(lItem["time"],"%H:%M")
lActivityDateTime.replace(year=lCurrentDateTime.year,month=lCurrentDateTime.month,day=lCurrentDateTime.day)
#Убедиться в том, что время наступило
if lCurrentDateTime>=lActivityDateTime:
#Выполнить операцию
print("ProcessStart:"+lItem["processPath"])
lDaemonProcessCodeProcessDict[lItem["processCode"]]=subprocess.Popen([lItem["processPath"],lItem["processArgs"]],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
#Уснуть до следующего прогона
time.sleep(lDaemonLoopSeconds)

@ -0,0 +1,29 @@
{ "__loopSeconds":"Количество секунд, между циклами проверки действий",
"loopSeconds":45,
"activityList":[
{
"description":"Запуск Python консоли",
"__processCode":"Код процесса в openRPA daemon. Данные код может использоваться в дальнейшем для того, чтобы завершить именно тот процесс, который пораждался этой программой",
"processCode":"PythonDebug",
"__activityType":"processStart/processEnd",
"activityType":"processStart",
"__time":"__Время запуска активности",
"time":"09:25",
"__timeZone":"Часовой пояс, в рамках которого указано время. По-умолчанию часовой пояс МСК (GMT+4). Формат UTC offset in the form ±HHMM[SS[.ffffff]] ",
"timeZone":"+0400",
"__processPath":"Полный путь/наименование процесса. Запуск производится через subprocess. Идентификатор процесса в дальнейшем сохраняется и его можно будет закрыть с помощью параметра processCode",
"___processPath":"C:\\Abs\\Archive\\scopeSrcUL\\OpenRPA\\OpenRPA_32.cmd",
"processPath":"C:\\Abs\\Archive\\scopeSrcUL\\OpenRPA\\WPy32-3720\\IDLE (Python GUI).exe",
"__processArgs":"Аргументы, передаваемые при запуске процесса",
"processArgs":""
},
{
"description":"Остановка Python консоли",
"activityType":"processEnd",
"time":"18:26",
"timeZone":"4",
"processCode":"PythonDebug"
}
]
}
Loading…
Cancel
Save