| 1234567891011121314151617181920212223242526272829303132333435363738 | import openaiimport sentry_sdkfrom langfuse import parse_errorfrom sentry_sdk.integrations.celery import CeleryIntegrationfrom sentry_sdk.integrations.flask import FlaskIntegrationfrom werkzeug.exceptions import HTTPExceptionfrom core.model_runtime.errors.invoke import InvokeRateLimitErrordef 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 eventdef init_app(app):    if app.config.get("SENTRY_DSN"):        sentry_sdk.init(            dsn=app.config.get("SENTRY_DSN"),            integrations=[FlaskIntegration(), CeleryIntegration()],            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"),            release=f"dify-{app.config.get('CURRENT_VERSION')}-{app.config.get('COMMIT_SHA')}",            before_send=before_send,        )
 |