djangogunicorneventletbugsnag

Django; Bugsnag doesn't work with Gunicorn with Eventlet


Testing BugSnag with our Django based REST-API server. I have an API endpoint that crashes on purpose just to test it, someone in a certain serializer my views use.

In my own settings.py I have:

BUGSNAG = {
    'api_key': '[redacted]',
    'app_version': "1.0",
    'project_root': "/path/to/my/project/folder/where/manage.py/is",
    'release_stage': "development",
    'notify_release_stages': ['development', 'staging', 'production']
}


MIDDLEWARE = (
    'bugsnag.django.middleware.BugsnagMiddleware',
    <all other middleware>
)

When I run my server like this: gunicorn myproj.wsgi -b 0.0.0.0:8000 --reload or python manage.py runserver BugSnag reports all crashes correctly.

However, when I use gunicorn myproj.wsgi -b 0.0.0.0:8000 --reload --worker-class eventlet BugSnag stops sending bug reports when exception occurr. The only clue I have for this behavior is this:

2020-02-08 02:34:37,363 - [bugsnag] ERROR - Notifying Bugsnag failed wrap_socket() got an unexpected keyword argument '_context'

Why does BugSnag stop working when gunicorn is used with the eventlet worker class? I am completely at a loss here. There is zero references to the subject online as if this problem only occurs on my computer.... not very encouraging.


Solution

  • Rolled back to Python 3.6.5 to make it work -- Eventlet has an SSL issue with Python 3.7 still unfixed. It's virtually unusable on 3.7