Files
txspector-new/monitor_script.py
2024-06-15 11:27:29 +08:00

51 lines
2.0 KiB
Python

import subprocess
import time
import os
import csv
def get_last_processed_filename(progress_file_path):
try:
with open(progress_file_path, "r") as file:
return file.read().strip()
except FileNotFoundError:
return None
def set_last_processed_filename(progress_file_path, filename):
with open(progress_file_path, "w") as file:
file.write(filename)
def is_all_processed(input_folder, progress_file_path):
last_processed = get_last_processed_filename(progress_file_path)
if not last_processed:
return False
filenames = sorted(os.listdir(input_folder))
return last_processed not in filenames or filenames.index(last_processed) == len(filenames) - 1
def log_error(error_log_file, transaction, error_message):
with open(error_log_file, 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([transaction, error_message])
def run_script(input_folder, progress_file_path, error_log_file):
while not is_all_processed(input_folder, progress_file_path):
last_processed = get_last_processed_filename(progress_file_path)
try:
subprocess.run(['python3', 'analyze3.py'], check=True)
except subprocess.CalledProcessError as e:
print("Script crashed. Restarting...")
log_error(error_log_file, last_processed if last_processed else "unknown", "Script crashed: " + str(e))
filenames = sorted(os.listdir(input_folder))
next_file_index = filenames.index(last_processed) + 1 if last_processed in filenames else 0
if next_file_index < len(filenames):
next_file = filenames[next_file_index]
set_last_processed_filename(progress_file_path, next_file)
time.sleep(1)
print("All files have been processed.")
if __name__ == "__main__":
input_folder = "/home/yangyi/database/smart_contract-dataset/Tx_tuples"
progress_file_path = 'progress.txt'
error_log_file = 'error_log.csv'
run_script(input_folder, progress_file_path, error_log_file)