[ TAG 156 ][24.09.2021] -Erfolgreich -IAP-20210601-20210722-1145 -RPRCSL

Ich habe die heutige Worksession um [24.09.2021][0800] angefangen. Meine erste Aufgabe bestand heute darin, den Nachtrag für [T156] zu machen. Ich habe die gestrige Worksession nicht dokumentiert.


def RPRCSL_ITEM(
name=None,
pid=None,
ppid=None,
status=None,
create_time_0=None,
create_time_1=None,
closed_time_0=None,
closed_time_1=None
):
i = dict()
i["name"] = name
i["pid"] = pid
i["ppid"] = ppid
i["status"] = status
i["create_time_0"] = create_time_0
i["create_time_1"] = create_time_1
i["closed_time_0"] = closed_time_0
i["closed_time_1"] = closed_time_1
return i


def RPRCSL_COPY(rprcsl, pid):
return RPRCSL_ITEM(
rprcsl[pid]["name"],
rprcsl[pid]["pid"],
rprcsl[pid]["ppid"],
rprcsl[pid]["status"],
rprcsl[pid]["create_time_0"],
rprcsl[pid]["create_time_1"],
rprcsl[pid]["closed_time_0"],
rprcsl[pid]["closed_time_1"]
)


def RPRCSL_ADD(rprcsl, pid):
print("RPRCSL_ADD(rprcsl, pid) -> wird ausgeführt.")
print(f"RPRCSL_ADD(rprcsl, pid) -> pid: {pid}")
print(f"RPRCSL_ADD(rprcsl, pid) -> rprcsl: {rprcsl}")
p = psutil.Process(pid)
with p.oneshot():
rprcsl[pid] = RPRCSL_ITEM(
name=p.name(),
pid=p.pid,
ppid=p.ppid(),
status=p.status(),
create_time_0=p.create_time(),
create_time_1=datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S"),
closed_time_0=None,
closed_time_1=None
)
print("RPRCSL_ADD(rprcsl, pid) -> Processinformationen wurden zu RPRCSL-Liste hinzugefügt.")


def RPRCSL_EVNT_CLOSE(rprcsl, pid, pid_copy):
print(f"RPRCSL_EVNT_CLOSE -> rprcsl: {rprcsl}")
print(f"RPRCSL_EVNT_CLOSE -> pid: {pid}")
print(f"RPRCSL_EVNT_CLOSE -> pid_copy: {pid_copy}")
print(f"RPRCSL_EVNT_CLOSE -> Initialisiere [closed_time_0] in pid_copy")
pid_copy["closed_time_0"] = time.time()
pid_copy["closed_time_1"] = datetime.datetime.fromtimestamp(pid_copy["closed_time_0"]).strftime("%Y-%m-%d %H:%M:%S")
print(f"RPRCSL_EVNT_CLOSE -> Initialisierung erfolgreich durchgeführt [closed_time_0]")
print(f"RPRCSL_EVNT_CLOSE -> Kopiere pid_copy in rprcsl")
print(f"RPRCSL_EVNT_CLOSE -> pid_copy:{pid_copy}")
rprcsl[pid] = pid_copy
print(f"RPRCSL_EVNT_CLOSE -> Kopiervorgang durchgeführt pid_copy in rprcsl")
print(f"RPRCSL_EVNT_CLOSE -> Gebe RPRCSL aus.")
print(f"RPRCSL_EVNT_CLOSE -> rprcsl[pid]: {rprcsl[pid]}")


ENTWICKLUNGS-STATUS [24.09.2021][1011]

def ALOG(rprcsl):
print("ALOG -> Prozess ist gestartet.")
print("ALOG -> pid wird ermittelt.")
pid = os.getpid()
print(f"ALOG -> pid[{pid}] wurde ermittelt.")
print("ALOG -> RPRCSL-Eintrag wird vorbereitet.")
RPRCSL_ADD(rprcsl, pid)
print(f"ALOG -> RPRCSL pid[{pid}] wurde registriert.")
print(f"ALOG -> RPRCSL: {rprcsl}")

print("ALOG -> WARTE-DUMMY wird gestartet.")
i = 0
while i > 100000:
i += 1
print("ALOG -> WARTE-DUMMY wurde beendet.")

print("ALOG -> Erstelle eine [pid_copy] Kopie")
RPRCSL_EVNT_CLOSE(rprcsl, pid, RPRCSL_COPY(rprcsl, pid))
print(f"ALOG -> RPRCSL: {rprcsl}")


def START_PROCESS(alog_glb):
p_itm = None

print("")
print("")


print("PROCESS_ALOG_20210726_0110 - START_PROCESS()")
APL_INIT(alog_glb)
RPRCSL_INIT(alog_glb)
print("")

print("START_PROCESS ->[0] Process wird initialisiert.")
p = Process(target=ALOG, args=(alog_glb.RPRCSL,))
print("START_PROCESS ->[0] Process wurde erfolgreich initialisiert.")
print("")

print("START_PROCESS ->[1] Process wird gestartet.")
p.start()
print("START_PROCESS ->[1] Process wurde erfolgreich gestartet.")
print("")

print("START_PROCESS ->[2] p.join() wird ausgeführt")
p.join()
print("START_PROCESS ->[2] p.join() wurde durchgeführt")
print("")


print(f"START_PROCESS -> alog_glb.RPRCSL: {alog_glb.RPRCSL}")

print("")
print("")


def STOP_LAST_PROCESS(alog_glb):
check = True
if alog_glb.MNGR is None:
check = False
if alog_glb.APL is None:
check = False
if len(alog_glb.APL) < 1:
check = False
if check:
APL_ITM_DELET(alog_glb.APL, alog_glb.APL[-1])


def APL_INIT(alog_glb):
print("PROCESS_ALOG_20210726_0110 - APL_INIT(alog_glb)")
if alog_glb.MNGR is None:
alog_glb.MNGR = Manager()
print("PROCESS_ALOG_20210726_0110 - APL_INIT(alog_glb) - alog_glb.MNGR wurde initialisiert.")
if alog_glb.APL is None:
alog_glb.APL = alog_glb.MNGR.list()
print("PROCESS_ALOG_20210726_0110 - APL_INIT(alog_glb) - alog_glb.APL wurde initialisiert.")


def APL_DESTROY(alog_glb):
print("PROCESS_ALOG_20210726_0110 - APL_DESTROY(alog_glb)")
if alog_glb.MNGR is not None:
alog_glb.MNGR.shutdown()
alog_glb.MNGR = None
print("PROCESS_ALOG_20210726_0110 - APL_DESTROY(alog_glb) - alog_glb.MNGR wurde eliminiert.")
if alog_glb.APL is not None:
alog_glb.APL = None
print("PROCESS_ALOG_20210726_0110 - APL_DESTROY(alog_glb) - alog_glb.APL wurde eliminiert.")


def APL_ITM_ADD(apl, pid):
apl.append(pid)


def APL_ITM_DELET(apl, pid):
apl.remove(pid)


def RPRCSL_INIT(alog_glb):
print("PROCESS_ALOG_20210726_0110 - RPRCSL_INIT(alog_glb)")
if alog_glb.MNGR is None:
alog_glb.MNGR = Manager()
print("PROCESS_ALOG_20210726_0110 - RPRCSL_INIT(alog_glb) - alog_glb.MNGR wurde initialisiert.")
if alog_glb.RPRCSL is None:
alog_glb.RPRCSL = alog_glb.MNGR.dict()
print("PROCESS_ALOG_20210726_0110 - RPRCSL_INIT(alog_glb) - alog_glb.RPRCSL wurde initialisiert.")

def RPRCSL_DESTROY(alog_glb):
print("PROCESS_ALOG_20210726_0110 - RPRCSL_DESTROY(alog_glb)")
if alog_glb.MNGR is not None:
alog_glb.MNGR.shutdown()
alog_glb.MNGR = None
print("PROCESS_ALOG_20210726_0110 - RPRCSL_DESTROY(alog_glb) - alog_glb.MNGR wurde eliminiert.")
if alog_glb.RPRCSL is None:
alog_glb.RPRCSL = None
print("PROCESS_ALOG_20210726_0110 - RPRCSL_DESTROY(alog_glb) - alog_glb.RPRCSL wurde eliminiert.")


def RPRCSL_ITEM(
name=None,
pid=None,
ppid=None,
status=None,
create_time_0=None,
create_time_1=None,
closed_time_0=None,
closed_time_1=None
):
i = dict()
i["name"] = name
i["pid"] = pid
i["ppid"] = ppid
i["status"] = status
i["create_time_0"] = create_time_0
i["create_time_1"] = create_time_1
i["closed_time_0"] = closed_time_0
i["closed_time_1"] = closed_time_1
return i


def RPRCSL_ADD(rprcsl, pid):
print("RPRCSL_ADD(rprcsl, pid) -> wird ausgeführt.")
print(f"RPRCSL_ADD(rprcsl, pid) -> pid: {pid}")
print(f"RPRCSL_ADD(rprcsl, pid) -> rprcsl: {rprcsl}")
p = psutil.Process(pid)
with p.oneshot():
rprcsl[pid] = RPRCSL_ITEM(
name=p.name(),
pid=p.pid,
ppid=p.ppid(),
status=p.status(),
create_time_0=p.create_time(),
create_time_1=datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S"),
closed_time_0=None,
closed_time_1=None
)
print("RPRCSL_ADD(rprcsl, pid) -> Processinformationen wurden zu RPRCSL-Liste hinzugefügt.")

def RPRCSL_COPY(rprcsl, pid):
return RPRCSL_ITEM(
name=rprcsl[pid]["name"],
pid=rprcsl[pid]["pid"],
ppid=rprcsl[pid]["ppid"],
status=rprcsl[pid]["status"],
create_time_0=rprcsl[pid]["create_time_0"],
create_time_1=rprcsl[pid]["create_time_1"],
closed_time_0=rprcsl[pid]["closed_time_0"],
closed_time_1=rprcsl[pid]["closed_time_1"]
)


def RPRCSL_EVNT_CLOSE(rprcsl, pid, pid_copy):
print(f"RPRCSL_EVNT_CLOSE -> rprcsl: {rprcsl}")
print(f"RPRCSL_EVNT_CLOSE -> pid: {pid}")
print(f"RPRCSL_EVNT_CLOSE -> pid_copy: {pid_copy}")
print(f"RPRCSL_EVNT_CLOSE -> Initialisiere [closed_time_0] in pid_copy")
pid_copy["closed_time_0"] = time.time()
pid_copy["closed_time_1"] = datetime.datetime.fromtimestamp(pid_copy["closed_time_0"]).strftime("%Y-%m-%d %H:%M:%S")
print(f"RPRCSL_EVNT_CLOSE -> Initialisierung erfolgreich durchgeführt [closed_time_0]")
print(f"RPRCSL_EVNT_CLOSE -> Kopiere pid_copy in rprcsl")
print(f"RPRCSL_EVNT_CLOSE -> pid_copy:{pid_copy}")
rprcsl[pid] = pid_copy
print(f"RPRCSL_EVNT_CLOSE -> Kopiervorgang durchgeführt pid_copy in rprcsl")
print(f"RPRCSL_EVNT_CLOSE -> Gebe RPRCSL aus.")
print(f"RPRCSL_EVNT_CLOSE -> rprcsl[pid]: {rprcsl[pid]}")
Ausgabe:
------------------------------------
mki_bscl_1_20210819 - BSC_CNTRL_START_A_RECORD


PROCESS_ALOG_20210726_0110 - START_PROCESS()
PROCESS_ALOG_20210726_0110 - APL_INIT(alog_glb)
PROCESS_ALOG_20210726_0110 - RPRCSL_INIT(alog_glb)
PROCESS_ALOG_20210726_0110 - RPRCSL_INIT(alog_glb) - alog_glb.RPRCSL wurde initialisiert.

START_PROCESS ->[0] Process wird initialisiert.
START_PROCESS ->[0] Process wurde erfolgreich initialisiert.

START_PROCESS ->[1] Process wird gestartet.
START_PROCESS ->[1] Process wurde erfolgreich gestartet.

START_PROCESS ->[2] p.join() wird ausgeführt
ALOG_20210722.GLOBALS_20210720_1330 - GLOBALS_20210720_1330
name:MKI_20210819.MKI_MAIN_20210819 MKI_MAIN_20210819

ALOG -> Prozess ist gestartet.
ALOG -> pid wird ermittelt.
ALOG -> pid[18400] wurde ermittelt.
ALOG -> RPRCSL-Eintrag wird vorbereitet.

RPRCSL_ADD(rprcsl, pid) -> wird ausgeführt.
RPRCSL_ADD(rprcsl, pid) -> pid: 18400
RPRCSL_ADD(rprcsl, pid) -> rprcsl: {}
RPRCSL_ADD(rprcsl, pid) -> Processinformationen wurden zu RPRCSL-Liste hinzugefügt.

ALOG -> RPRCSL pid[18400] wurde registriert.

ALOG -> RPRCSL: {18400: {
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': None, 
'closed_time_1': None
}
}
ALOG -> WARTE-DUMMY wird gestartet.
ALOG -> WARTE-DUMMY wurde beendet.
ALOG -> Erstelle eine [pid_copy] Kopie

RPRCSL_EVNT_CLOSE -> rprcsl: {18400: {
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': None, 
'closed_time_1': None
}
}
RPRCSL_EVNT_CLOSE -> pid: 18400
RPRCSL_EVNT_CLOSE -> pid_copy: {
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': None, 
'closed_time_1': None
}
RPRCSL_EVNT_CLOSE -> Initialisiere [closed_time_0] in pid_copy
RPRCSL_EVNT_CLOSE -> Initialisierung erfolgreich durchgeführt [closed_time_0]
RPRCSL_EVNT_CLOSE -> Kopiere pid_copy in rprcsl
RPRCSL_EVNT_CLOSE -> pid_copy:{
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': 1632470761.6815085, 
'closed_time_1': '2021-09-24 10:06:01'
}
RPRCSL_EVNT_CLOSE -> Kopiervorgang durchgeführt pid_copy in rprcsl
RPRCSL_EVNT_CLOSE -> Gebe RPRCSL aus.
RPRCSL_EVNT_CLOSE -> rprcsl[pid]: {
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': 1632470761.6815085, 
'closed_time_1': '2021-09-24 10:06:01'
}
ALOG -> RPRCSL: {18400: {
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': 1632470761.6815085, 
'closed_time_1': '2021-09-24 10:06:01'
}
}
START_PROCESS ->[2] p.join() wurde durchgeführt

START_PROCESS -> alog_glb.RPRCSL: {18400: {
'name': 'python.exe', 
'pid': 18400, 
'ppid': 13316, 
'status': 'running', 
'create_time_0': 1632470761.568949, 
'create_time_1': '2021-09-24 10:06:01', 
'closed_time_0': 1632470761.6815085, 
'closed_time_1': '2021-09-24 10:06:01'
}
}


mki_bscl_1_20210819 - BSC_CNTRL_START_A_RECORD - []

Die Registrierung der Prozesse funktioniert mittlerweile ganz gut. Die Schwachstelle, die ich bei mir zu diesen Zeitpunkt gerade sehe, besteht im Index des Dictionary.

Ich denke es kann zu einer Situation kommen, dass sobald der Prozess beendet wurde eine Situation auftreten kann, wo der neue Prozess die selbe PID bekommen kann. In diesem Fall wird der neue Prozess mit seiner PID die Informationen des älteren Prozesses überschreiben.


Diese Umstände führen mich dazu, die Programm-Phase an dem die Prozesse und das Programm selbst beendet werden zu überarbeiten.


Kritik:
---------------------
def APL_DESTROY(alog_glb):
if alog_glb.MNGR is not None:
alog_glb.MNGR.shutdown()
alog_glb.MNGR = None
if alog_glb.APL is not None:
alog_glb.APL = None

def RPRCSL_DESTROY(alog_glb):
if alog_glb.MNGR is not None:
alog_glb.MNGR.shutdown()
alog_glb.MNGR = None
if alog_glb.RPRCSL is None:
alog_glb.RPRCSL = None


def STOP_LAST_PROCESS(alog_glb):
check = True
if alog_glb.MNGR is None:
check = False
if alog_glb.APL is None:
check = False
if len(alog_glb.APL) < 1:
check = False
if check:
APL_ITM_DELET(alog_glb.APL, alog_glb.APL[-1])


def EXIT():
'''
Die EXIT-Methode wird als Garbage-Collector benutzt.
Die Methode überprüft und löscht alle Speicher-Module.
'''
print("main.py - EXIT()")
if alog_glb.MNGR is not None:
alog.APL_DESTROY(alog_glb)
print("main.py - EXIT() - alog.APL_DESTROY(alog_glb) - APL wurde freigegeben.")
alog.RPRCSL_DESTROY(alog_glb)
print("main.py - EXIT() - alog.RPRCSL_DESTROY(alog_glb) - RPRCSL wurde freigegeben.")


Das sind die Methoden, die beim Beenden des Programms und der Prozesse relevant sind.

[24.09.2021][1212] - Ich habe das APL gelöscht.


Hochachtungsvoll
Artem Kraft

Kommentare

Beliebte Posts aus diesem Blog

[ TAG 38 ][29.05.2021] - Erfolgreich - Freelancer-Portale

[ TAG 747 ][07.04.2023] -Erfolgreich -BNKTRS -Google Code -Objekt und Methodenliste

[ TAG 52 ][12.06.2021] - Erfolgreich - IAP-20210601-20210609-2325