| 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, |
| ) |
|
|