Add parser.py
This commit is contained in:
parent
f23f3de779
commit
fa0e73280d
67
parser.py
Normal file
67
parser.py
Normal file
@ -0,0 +1,67 @@
|
||||
import subprocess
|
||||
import json
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
|
||||
def is_json(myjson):
|
||||
try:
|
||||
json_object = json.loads(myjson)
|
||||
except ValueError as e:
|
||||
return False
|
||||
return True
|
||||
|
||||
def parse_logs():
|
||||
unsuccessful_attempts = 0
|
||||
current_retry = 0
|
||||
max_retry = 0
|
||||
print("Requesting Docker logs...", flush=True)
|
||||
process = subprocess.Popen(
|
||||
["docker", "logs", "worker"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True
|
||||
)
|
||||
|
||||
try:
|
||||
stdout, stderr = process.communicate()
|
||||
if stderr:
|
||||
print(f"Error: {stderr.strip()}", flush=True)
|
||||
|
||||
for line in stdout.splitlines():
|
||||
#print(f"Line: {line}", flush=True)
|
||||
if is_json(line):
|
||||
data = json.loads(line)
|
||||
|
||||
if data.get("level") == "info" or data.get("level") == "error":
|
||||
print(f"{data['message']}", flush=True)
|
||||
|
||||
if data.get("msg") == "Send Worker Data to chain" and data.get("message") == "Success":
|
||||
print(f"Success: {data}", flush=True)
|
||||
return True, f"Success after {unsuccessful_attempts} unsuccessful attempts, with current retry {current_retry} out of {max_retry}"
|
||||
elif data.get("msg") == "Send Worker Data to chain" and "Failed, retrying..." in data.get("message", ""):
|
||||
unsuccessful_attempts += 1
|
||||
retry_info = data["message"].split("Retry ")[1].strip("()")
|
||||
current_retry, max_retry = map(int, retry_info.split("/"))
|
||||
if current_retry == max_retry:
|
||||
print(f"Max Retry Reached: {data}", flush=True)
|
||||
return False, "Max Retry Reached"
|
||||
finally:
|
||||
process.stdout.close()
|
||||
|
||||
print("Sleeping before next log request...", flush=True)
|
||||
time.sleep(5)
|
||||
|
||||
return False, "No Success"
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Parsing logs...")
|
||||
result = parse_logs()
|
||||
print(result[1])
|
||||
if result[0] == False:
|
||||
print("Exiting 1...")
|
||||
os._exit(1)
|
||||
else:
|
||||
print("Exiting 0...")
|
||||
os._exit(0)
|
||||
|
Loading…
Reference in New Issue
Block a user