姜戈; Bugsnag 不适用于带有 Eventlet 的 Gunicorn
Django; Bugsnag doesn't work with Gunicorn with Eventlet
使用我们基于 Django
的 REST-API 服务器测试 BugSnag
。我有一个 API 端点故意崩溃只是为了测试它,我的视图使用的某个序列化器中的某个人。
在我自己的 settings.py
我有:
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>
)
当我 运行 我的服务器这样时: gunicorn myproj.wsgi -b 0.0.0.0:8000 --reload
或 python manage.py runserver
BugSnag
正确报告所有崩溃。
但是,当我使用gunicorn myproj.wsgi -b 0.0.0.0:8000 --reload --worker-class eventlet
BugSnag 在发生异常时停止发送错误报告。我对这种行为的唯一线索是:
2020-02-08 02:34:37,363 - [bugsnag] ERROR - Notifying Bugsnag failed wrap_socket() got an unexpected keyword argument '_context'
当 gunicorn
与 eventlet
worker class 一起使用时,为什么 BugSnag 停止工作?我在这里完全不知所措。网上对该主题的引用为零,就好像这个问题只发生在我的电脑上……不是很令人鼓舞。
回滚到 Python 3.6.5 以使其工作 -- Eventlet 有一个 SSL 问题,Python 3.7 仍未修复。它在 3.7
上几乎不可用
使用我们基于 Django
的 REST-API 服务器测试 BugSnag
。我有一个 API 端点故意崩溃只是为了测试它,我的视图使用的某个序列化器中的某个人。
在我自己的 settings.py
我有:
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>
)
当我 运行 我的服务器这样时: gunicorn myproj.wsgi -b 0.0.0.0:8000 --reload
或 python manage.py runserver
BugSnag
正确报告所有崩溃。
但是,当我使用gunicorn myproj.wsgi -b 0.0.0.0:8000 --reload --worker-class eventlet
BugSnag 在发生异常时停止发送错误报告。我对这种行为的唯一线索是:
2020-02-08 02:34:37,363 - [bugsnag] ERROR - Notifying Bugsnag failed wrap_socket() got an unexpected keyword argument '_context'
当 gunicorn
与 eventlet
worker class 一起使用时,为什么 BugSnag 停止工作?我在这里完全不知所措。网上对该主题的引用为零,就好像这个问题只发生在我的电脑上……不是很令人鼓舞。
回滚到 Python 3.6.5 以使其工作 -- Eventlet 有一个 SSL 问题,Python 3.7 仍未修复。它在 3.7
上几乎不可用