added files

This commit is contained in:
2022-01-18 09:38:39 +00:00
parent 12b64d43b9
commit b0b3cdbb06
6 changed files with 163 additions and 0 deletions

91
onlyone/__init__.py Normal file
View File

@@ -0,0 +1,91 @@
import os
import psutil
import logging
from typing import List
def b():
return 3+3
log = logging.getLogger(__name__)
def isrunning(process:str):
for proc in psutil.process_iter():
if process.split(" ")[0] == proc.name().split(" ")[0]:
return True
return False
def startprocess(process:str):
try:
#raise Exception("aaa")
os.popen(process)
log.info("[onlyone][startprocess] -> processed started : " + process)
except OSError as e:
log.error("eror")
except:
log.error("eror")
def __killprocesses(killprocesses:List, processesList: List):
if killprocesses == None :
return False
for proc in processesList:
if any(element.split(" ")[0] == proc.name().split(" ")[0] for element in killprocesses):
proc.kill()
log.info("[onlyone][__killprocesses] -> processed kiled : " + proc.name + "(" + proc.id + ")")
return False
def killprocesses(killprocesses:List):
return __killprocesses(killprocesses, psutil.process_iter())
def __forceoneprocessinstance(process:str, processes:List):
found = False
for proc in processes:
if proc.name().split(" ")[0] == process.split(" ")[0]:
if found:
proc.kill()
log.info("[onlyone][__forceoneprocessinstance] -> processed kiled : " + proc.name + "(" + proc.id + ")")
else :
found = True
if not found:
startprocess(process)
def forceoneprocessinstance(processname:str):
return __forceoneprocessinstance(processname, psutil.process_iter())
def onlyone(process:str, killprocesses:list):
processes = psutil.process_iter()
__killprocesses(killprocesses, processes)
__forceoneprocessinstance(process, processes)
def Manager():
def __init__(self):
self.processes=[]
self._current=None
def addprocess(self, key, processname, initParams):
self.processes.append({
key:key,
processname:processname,
initParams:initParams
})
def current(self):
return None if self == None else self._current.key
def current(self, key):
item = any(element in key for element in self.processes)
if item == None:
return None
self._current=item
others = []
for item in self.processes:
if item.key!=key:
others.append(item.processname)
onlyone(item.processname, item.initParams, [element.processname for element in others])

38
onlyone/__main__.py Normal file
View File

@@ -0,0 +1,38 @@
import logging
import argparse
from types import new_class
from typing import List
from __init__ import *
logging.basicConfig(level="DEBUG")
log = logging.getLogger(__name__)
parser = argparse.ArgumentParser(description='onlyone')
parser.add_argument('--init', type=str, required=False, help='init processes')
parser.add_argument('--kill', type=List, required=False, help='kill processes')
parser.add_argument('--configfile', type=str, required=False, help='configfile')
parser.add_argument('--mode', type=str, required=False, help='configfile')
args = parser.parse_args()
if args.configfile:
manager = Manager()
#manager.refreshrate(1000)
manager.addprocess("x", "aaaaa", None)
manager.current("x")
#manager.oncurrent_changed(__oncurrent_changed)
console.writeline("write !quit and enter to exit")
else:
if args.init:
log.debug("invoking onlyone.onlyone")
onlyone(args.init, args.kill)
quit()
if args.kill:
log.debug("invoking onlyone.killprocesses")
killprocesses(args.kill)
quit()
log.debug("invoked without arguments")
def __oncurrent_changed(self, sender):
t=""

0
onlyone/fifo/__init__.py Normal file
View File

0
onlyone/fifo/client.py Normal file
View File

0
onlyone/fifo/server.py Normal file
View File

34
onlyone/sample.yaml Normal file
View File

@@ -0,0 +1,34 @@
refresrate: 3000
default:
fifo:
name: "aaaaaa"
mqtt:
broker: "aaaaaaaaaa"
clientid: "aaaaaaa"
topic: home/pi/onlyone
username:
password:
rest:
username: aaaa
password: aaa
port: 67777
processes: _
key: blue
process: smb
params: _
teste
teste
aaa
key: blue
process: smb
findexp: aaaaaa
params: _
teste
teste
aaa
key: blue
process: smb
params: _
teste
teste
aaa