2024-08-28 23:26:11 +08:00
|
|
|
import openai
|
2023-05-15 08:51:32 +08:00
|
|
|
import sentry_sdk
|
2024-09-13 13:44:19 +08:00
|
|
|
from langfuse import parse_error
|
2023-05-15 08:51:32 +08:00
|
|
|
from sentry_sdk.integrations.celery import CeleryIntegration
|
|
|
|
from sentry_sdk.integrations.flask import FlaskIntegration
|
|
|
|
from werkzeug.exceptions import HTTPException
|
|
|
|
|
2024-09-19 17:34:12 +08:00
|
|
|
from core.model_runtime.errors.invoke import InvokeRateLimitError
|
|
|
|
|
2023-05-15 08:51:32 +08:00
|
|
|
|
2024-09-13 16:08:08 +08:00
|
|
|
def before_send(event, hint):
|
|
|
|
if "exc_info" in hint:
|
|
|
|
exc_type, exc_value, tb = hint["exc_info"]
|
|
|
|
if parse_error.defaultErrorResponse in str(exc_value):
|
|
|
|
return None
|
|
|
|
|
|
|
|
return event
|
|
|
|
|
|
|
|
|
2023-05-15 08:51:32 +08:00
|
|
|
def init_app(app):
|
2024-08-15 12:54:05 +08:00
|
|
|
if app.config.get("SENTRY_DSN"):
|
2023-05-15 08:51:32 +08:00
|
|
|
sentry_sdk.init(
|
2024-08-15 12:54:05 +08:00
|
|
|
dsn=app.config.get("SENTRY_DSN"),
|
|
|
|
integrations=[FlaskIntegration(), CeleryIntegration()],
|
2024-09-19 17:34:12 +08:00
|
|
|
ignore_errors=[
|
|
|
|
HTTPException,
|
|
|
|
ValueError,
|
|
|
|
openai.APIStatusError,
|
|
|
|
InvokeRateLimitError,
|
|
|
|
parse_error.defaultErrorResponse,
|
|
|
|
],
|
2024-08-15 12:54:05 +08:00
|
|
|
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"),
|
|
|
|
release=f"dify-{app.config.get('CURRENT_VERSION')}-{app.config.get('COMMIT_SHA')}",
|
2024-09-13 16:08:08 +08:00
|
|
|
before_send=before_send,
|
2023-05-15 08:51:32 +08:00
|
|
|
)
|