added files
This commit is contained in:
91
onlyone/__init__.py
Normal file
91
onlyone/__init__.py
Normal 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
38
onlyone/__main__.py
Normal 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
0
onlyone/fifo/__init__.py
Normal file
0
onlyone/fifo/client.py
Normal file
0
onlyone/fifo/client.py
Normal file
0
onlyone/fifo/server.py
Normal file
0
onlyone/fifo/server.py
Normal file
34
onlyone/sample.yaml
Normal file
34
onlyone/sample.yaml
Normal 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
|
||||
Reference in New Issue
Block a user