- python >= 3.8
Muffin-Sentry should be installed using pip: :
pip install muffin-sentry
from muffin import Application
import muffin_sentry
# Create Muffin Application
app = Application('example')
# Initialize the plugin
# As alternative: jinja2 = Jinja2(app, **options)
sentry = muffin_sentry.Plugin()
sentry.setup(app, dsn="DSN_URL")
# Setup custom request processors (coroutines are not supported)
@sentry.processor
def user_scope(event, hint, request):
if request.user:
event['user'] = request.user.email
return event
# Use it inside your handlers
# The exception will be send to Sentry
@app.route('/unhandled')
async def catch_exception(request):
raise Exception('unhandled')
# Capture a message by manual
@app.route('/capture_message')
async def message(request):
sentry.capture_message('a message from app')
return 'OK'
# Capture an exception by manual
@app.route('/capture_exception')
async def exception(request):
sentry.capture_exception(Exception())
return 'OK'
# Update Sentry Scope
@app.route('/update_user')
async def user(request):
scope = sentry.current_scope.get()
scope.set_user({'id': 1, 'email': '[email protected]'})
sentry.capture_exception(Exception())
return 'OK'
Name | Default value | Desctiption |
---|---|---|
dsn | "" |
Sentry DSN for your application |
sdk_options | {} |
Additional options for Sentry SDK Client. See https://docs.sentry.io/platforms/python/configuration/options/ |
ignore_errors | [ResponseError, ResponseRedirect] |
Exception Types to Ignore |
You are able to provide the options when you are initiliazing the plugin:
sentry.setup(app, dsn='DSN_URL')
Or setup it inside Muffin.Application
config using the SENTRY_
prefix:
SENTRY_DSN = 'DSN_URL'
Muffin.Application
configuration options are case insensitive
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-sentry/issues
Development of Muffin-Sentry happens at: https://github.com/klen/muffin-sentry
- klen (Kirill Klenov)
Licensed under a MIT license.