|
import openai |
|
import sentry_sdk |
|
from langfuse import parse_error |
|
from sentry_sdk.integrations.celery import CeleryIntegration |
|
from sentry_sdk.integrations.flask import FlaskIntegration |
|
from werkzeug.exceptions import HTTPException |
|
|
|
from configs import dify_config |
|
from core.model_runtime.errors.invoke import InvokeRateLimitError |
|
|
|
|
|
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 |
|
|
|
|
|
def init_app(app): |
|
if dify_config.SENTRY_DSN: |
|
sentry_sdk.init( |
|
dsn=dify_config.SENTRY_DSN, |
|
integrations=[FlaskIntegration(), CeleryIntegration()], |
|
ignore_errors=[ |
|
HTTPException, |
|
ValueError, |
|
openai.APIStatusError, |
|
InvokeRateLimitError, |
|
parse_error.defaultErrorResponse, |
|
], |
|
traces_sample_rate=dify_config.SENTRY_TRACES_SAMPLE_RATE, |
|
profiles_sample_rate=dify_config.SENTRY_PROFILES_SAMPLE_RATE, |
|
environment=dify_config.DEPLOY_ENV, |
|
release=f"dify-{dify_config.CURRENT_VERSION}-{dify_config.COMMIT_SHA}", |
|
before_send=before_send, |
|
) |
|
|