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