어떻게 sentry_sdk.init 하나만으로 flask app의 error message들을 보낼 수 있는지 깊게 들어가보자.
상당히 간단하다. 아래처럼 flask app을 생성 전에 sentry_sdk.init()을 해주면 된다. 그 이후 flask에서 에러가 발생하면 sentry서버로 message를 전송하게 된다.
from flask import Flask
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
sentry_sdk.init(
dsn="https://[email protected]/5174014",
integrations=[FlaskIntegration()]
)
app = Flask(__name__)
그러면 아래부분에서 integrations으로 오는 파라미터를 받아서 setup_integration()을 하게 된다.
그 후, 모든 integration에 대해서 setup_once()라는 static method를 콜하게 된다
flask app 생성시 app = Flask(__name__)
이렇게 생성하게 된다. 그리고 wsgi를 interface를 지원하는 서버에서 app()
를 콜하면서 wsgi 앱이 수행될 것이다.
먼저 플라스크쪽 코드를 보게 되면 __call__
이부분에 의해서 wsgi 앱을 실행시킴을 알수 있다.
최종적으로 본래 flask의 app을 수행하며, start_response에서 에러가 발생하게 되면 이벤트를 캡쳐하여 sentry로 전송하게 된다.