fix: Add error handling for syncing in tasks.py (#2663)

This pull request adds error handling for the syncing process in the
tasks.py file. Previously, if an error occurred during the syncing
process, the program would crash. With this change, any exceptions that
occur during syncing will be caught and logged, allowing the program to
continue running. This improves the stability and reliability of the
syncing functionality.

Co-authored-by: Stan Girard <stan@quivr.app>
This commit is contained in:
Stan Girard 2024-06-12 11:42:16 +02:00 committed by GitHub
parent 6f95a2d51c
commit 83f06dc5d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 10 deletions

View File

@ -39,10 +39,20 @@ async def _process_sync_active():
active = await sync_active_service.get_syncs_active_in_interval()
for sync in active:
details_user_sync = sync_user_service.get_sync_user_by_id(sync.syncs_user_id)
if details_user_sync["provider"].lower() == "google":
await google_sync_utils.sync(sync_active_id=sync.id, user_id=sync.user_id)
elif details_user_sync["provider"].lower() == "azure":
await azure_sync_utils.sync(sync_active_id=sync.id, user_id=sync.user_id)
else:
logger.info("Provider not supported: %s", details_user_sync["provider"])
try:
details_user_sync = sync_user_service.get_sync_user_by_id(
sync.syncs_user_id
)
if details_user_sync["provider"].lower() == "google":
await google_sync_utils.sync(
sync_active_id=sync.id, user_id=sync.user_id
)
elif details_user_sync["provider"].lower() == "azure":
await azure_sync_utils.sync(
sync_active_id=sync.id, user_id=sync.user_id
)
else:
logger.info("Provider not supported: %s", details_user_sync["provider"])
except Exception as e:
logger.error(f"Error syncing: {e}")
continue

View File

@ -5,7 +5,6 @@ from fastapi import UploadFile
from google.auth.transport.requests import Request as GoogleRequest
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from logger import get_logger
from modules.brain.repository.brains_vectors import BrainsVectors
from modules.knowledge.repository.storage import Storage
@ -125,9 +124,9 @@ class GoogleSyncUtils(BaseModel):
# Check if the file already exists in the storage
if check_file_exists(brain_id, file_name):
logger.debug("🔥 File already exists in the storage: %s", file_name)
self.storage.remove_file(brain_id + "/" + file_name)
BrainsVectors().delete_file_from_brain(brain_id, file_name)
to_upload_file = UploadFile(
file=BytesIO(file_data),
@ -166,7 +165,7 @@ class GoogleSyncUtils(BaseModel):
)
downloaded_files.append(file_name)
except HttpError as error:
except Exception as error:
logger.error(
"An error occurred while downloading Google Drive files: %s",
error,