import schedule
import time
import logging
import os
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def validate_input(func):
"""Decorator to validate user input."""
def wrapper(*args, **kwargs):
try:
# Get user input
user_input = input(f"Enter value for {func.__name__}: ")
# Perform validation based on the function's expected type
if func.__name__ == 'get_number':
return float(user_input)
elif func.__name__ == 'get_string':
return user_input
elif func.__name__ == 'get_boolean':
user_input = user_input.lower()
if user_input in ['true', 't', 'yes', 'y', '1']:
return True
elif user_input in ['false', 'f', 'no', 'n', '0']:
return False
else:
raise ValueError("Invalid boolean input. Use true/false, yes/no, 1/0.")
else:
return user_input # Assume string if type not explicitly handled
except ValueError as e:
logging.error(f"Invalid input for {func.__name__}: {e}")
print(f"Invalid input. Please enter a valid value.")
return None # Or raise the exception, depending on desired behavior
except Exception as e:
logging.error(f"Unexpected error during input: {e}")
print(f"An unexpected error occurred. Please check your input.")
return None
return wrapper
@validate_input
def get_number():
"""Gets a number from the user."""
pass
@validate_input
def get_string():
"""Gets a string from the user."""
pass
@validate_input
def get_boolean():
"""Gets a boolean from the user."""
pass
def scheduled_task(arg1, arg2):
"""Example scheduled task."""
logging.info(f"Running scheduled task with arguments: {arg1}, {arg2}")
try:
# Simulate some work
time.sleep(2)
logging.info("Task completed successfully.")
except Exception as e:
logging.error(f"Error during task execution: {e}")
def prepare_scheduled_runs():
"""Prepares the environment for scheduled runs."""
# Get arguments from user
arg1 = get_number()
arg2 = get_string()
boolean_arg = get_boolean()
if arg1 is None or arg2 is None or boolean_arg is None:
logging.error("Required arguments are missing. Aborting.")
return
# Check if required files exist
if not os.path.exists("data.txt"):
logging.warning("data.txt not found. Creating an empty file.")
with open("data.txt", "w") as f:
pass
# Configure schedule
schedule.every(10).seconds.do(scheduled_task, arg1, arg2) #example schedule
# schedule.every().hour.do(scheduled_task, arg1, arg2) #example schedule
logging.info("Scheduled tasks prepared successfully.")
if __name__ == "__main__":
prepare_scheduled_runs()
while True:
schedule.run_pending()
time.sleep(1)
Add your comment