import logging from scheduler.constants import ScheduleJobLocker from scheduler.schedule_job_locker import acquire_lock, release_lock from backend.document.document_manager import DocumentManager async def cleanup_document_job(): if await acquire_lock(ScheduleJobLocker.CLEANUP_DOCUMENT_JOB_LOCKER, 3600): try: logging.info("Starting job to clean up documents.") document_manager = DocumentManager() # Monitor execution time start_time = logging.getLogger().handlers[0].formatter.converter() logging.info(f"Job started at {start_time}") await document_manager.cleanup_document() logging.info("Successfully completed cleanup document job.") except Exception as e: # Log any unexpected exceptions logging.error( f"Error occurred during cleanup_document_job: {e}", exc_info=True ) finally: # Ensure the lock is released even if an exception occurs await release_lock(ScheduleJobLocker.CLEANUP_DOCUMENT_JOB_LOCKER) logging.info("Lock released for cleanup_document_job.") else: logging.info("The cleanup document job is locked by another process.")