From d96f5ba1cad744e2f6760d01dc5553946b416b1c Mon Sep 17 00:00:00 2001 From: Jyong <76649700+JohnJyong@users.noreply.github.com> Date: Thu, 19 Sep 2024 17:34:12 +0800 Subject: [PATCH] add storage error log (#8556) --- api/extensions/ext_sentry.py | 10 ++++++- api/extensions/ext_storage.py | 49 ++++++++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/api/extensions/ext_sentry.py b/api/extensions/ext_sentry.py index c2dc736038..e255e7eb35 100644 --- a/api/extensions/ext_sentry.py +++ b/api/extensions/ext_sentry.py @@ -5,6 +5,8 @@ from sentry_sdk.integrations.celery import CeleryIntegration from sentry_sdk.integrations.flask import FlaskIntegration from werkzeug.exceptions import HTTPException +from core.model_runtime.errors.invoke import InvokeRateLimitError + def before_send(event, hint): if "exc_info" in hint: @@ -20,7 +22,13 @@ def init_app(app): sentry_sdk.init( dsn=app.config.get("SENTRY_DSN"), integrations=[FlaskIntegration(), CeleryIntegration()], - ignore_errors=[HTTPException, ValueError, openai.APIStatusError, parse_error.defaultErrorResponse], + ignore_errors=[ + HTTPException, + ValueError, + openai.APIStatusError, + InvokeRateLimitError, + parse_error.defaultErrorResponse, + ], traces_sample_rate=app.config.get("SENTRY_TRACES_SAMPLE_RATE", 1.0), profiles_sample_rate=app.config.get("SENTRY_PROFILES_SAMPLE_RATE", 1.0), environment=app.config.get("DEPLOY_ENV"), diff --git a/api/extensions/ext_storage.py b/api/extensions/ext_storage.py index 5ce18b7292..1e6530f6f4 100644 --- a/api/extensions/ext_storage.py +++ b/api/extensions/ext_storage.py @@ -1,3 +1,4 @@ +import logging from collections.abc import Generator from typing import Union @@ -40,28 +41,56 @@ class Storage: self.storage_runner = LocalStorage(app=app) def save(self, filename, data): - self.storage_runner.save(filename, data) + try: + self.storage_runner.save(filename, data) + except Exception as e: + logging.exception("Failed to save file: %s", e) + raise e def load(self, filename: str, stream: bool = False) -> Union[bytes, Generator]: - if stream: - return self.load_stream(filename) - else: - return self.load_once(filename) + try: + if stream: + return self.load_stream(filename) + else: + return self.load_once(filename) + except Exception as e: + logging.exception("Failed to load file: %s", e) + raise e def load_once(self, filename: str) -> bytes: - return self.storage_runner.load_once(filename) + try: + return self.storage_runner.load_once(filename) + except Exception as e: + logging.exception("Failed to load_once file: %s", e) + raise e def load_stream(self, filename: str) -> Generator: - return self.storage_runner.load_stream(filename) + try: + return self.storage_runner.load_stream(filename) + except Exception as e: + logging.exception("Failed to load_stream file: %s", e) + raise e def download(self, filename, target_filepath): - self.storage_runner.download(filename, target_filepath) + try: + self.storage_runner.download(filename, target_filepath) + except Exception as e: + logging.exception("Failed to download file: %s", e) + raise e def exists(self, filename): - return self.storage_runner.exists(filename) + try: + return self.storage_runner.exists(filename) + except Exception as e: + logging.exception("Failed to check file exists: %s", e) + raise e def delete(self, filename): - return self.storage_runner.delete(filename) + try: + return self.storage_runner.delete(filename) + except Exception as e: + logging.exception("Failed to delete file: %s", e) + raise e storage = Storage()