Browse Source

add storage error log (#8556)

Jyong 7 months ago
parent
commit
d96f5ba1ca
2 changed files with 48 additions and 11 deletions
  1. 9 1
      api/extensions/ext_sentry.py
  2. 39 10
      api/extensions/ext_storage.py

+ 9 - 1
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"),

+ 39 - 10
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()