import subprocess # Run update_embeddings.py as subprocess import time # Run update_embeddings.py periodically import threading # in a separate thread import gradio as gr # Create a Gradio interface so spaces doesnt timeout from datetime import datetime def log_message(message): # Print message with a timestamp print(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - {message}") # Function to run update_embeddings.py periodically def run_script_periodically(interval): # Wait for the Gradio server to start time.sleep(10) while True: current_day = datetime.now().weekday() # Monday is 0, Sunday is 6 if current_day == 0: # Check if today is Monday log_message("Starting Updation") # Run run.py as a subprocess subprocess.run(["python", "update_embeddings.py"]) # Use "python3" if needed log_message("Finished Updation") # Wait for the specified interval before running again time.sleep(interval) else: print("Today is not Monday, lets check again in a day.") # Wait until the next day time.sleep(60 * 60 * 24) # Check again in 24 hours # Function to greet the user def greet(name): return "Hello " + name + "!!" # Specify the interval (in seconds) interval_seconds = 60*60*24*1 # Run run.py every day # Create a thread to run the script periodically script_thread = threading.Thread(target=run_script_periodically, args=(interval_seconds,)) # Start the thread script_thread.start() demo = gr.Interface(fn=greet, inputs="text", outputs="text") demo.launch()