Spaces:
Sleeping
Sleeping
Example usage in routes and app.py
""" In app.py (startup):
from services.drive_service import DriveService
from services.backup_service import initialize_backup_service
drive_service = DriveService()
backup_service = initialize_backup_service(
drive_service,
min_interval_seconds=30 # 30 seconds between backups
)
In routes (e.g., payments.py):
from fastapi import BackgroundTasks
from services.backup_service import get_backup_service
@router.post("/verify")
async def verify_payment(background_tasks: BackgroundTasks, ...):
# ... payment logic ...
# Trigger backup in background (non-blocking)
backup_service = get_backup_service()
background_tasks.add_task(backup_service.backup_async)
return {"success": True}
In app.py (shutdown):
from services.backup_service import get_backup_service
@app.on_event("shutdown")
async def shutdown():
backup_service = get_backup_service()
# Force backup on shutdown (ignore debouncing)
await backup_service.backup_async(force=True)
How it works:
- User A pays β backup starts in background
- User B pays (1s later) β sees backup in progress, skips
- User C pays (2s later) β sees backup in progress, skips
- Backup completes (5s)
- User D pays (10s after first) β only 10s elapsed, skips (debounce)
- User E pays (35s after first) β 35s > 30s, new backup starts!
Benefits:
- β No concurrent uploads
- β Response returns immediately
- β Minimal Drive API usage
- β No wasted resources """