我一直在将Sentry集成到Django应用程序中时遇到问题。当我在settings.py(使用现代风格的DSN导入并初始化)中配置的Sentry本地运行应用程序时,一切正常,并且所有错误均按预期出现在Sentry上。但是,在服务器上运行该应用程序时,遇到的错误很少会报告给Sentry,但确实会偶尔发生。查看应用程序正在运行的docker容器的日志,我可以看到以下预期出现的SSL错误有时会在Sentry上出现错误(尽管这种情况并不经常发生或说明该错误所引起的所有情况) (没有出现在Sentry上):
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')",),)': /api/<hidden_sentry_id>/store/
这是我进行哨兵初始化的方式:
sentry_sdk.init(
dsn="https://<hidden>@<hidden>.ingest.sentry.io/<hidden>",
environment="dev",
integrations=[DjangoIntegration()],
traces_sample_rate=1.0,
# If you wish to associate users to errors (assuming you are using
# django.contrib.auth) you may enable sending PII data.
send_default_pii=True
)
根据环境使用不同的settings.py文件。服务器上的配置中仅更改了“环境”值。
基于我在StackOverflow上发现的其他SSL意外EOF错误,我尝试使用pip将ndg-httpsclient
,pyopenssl
和pyasn1
安装到docker容器中,但这没有帮助。
有人对如何解决此问题有任何建议吗?
编辑: 还要注意的另一件有趣的事情是,导致错误有时会推送经过追溯且似乎已丢失的旧错误,即使新错误本身并未出现(例如,一系列错误和哨兵突然开始显示一些错误,时间戳记距42分钟前还不到)。虽然不是1:1,所以导致10个错误导致少于10个旧错误出现-实际上,我只是做了10个和1个旧错误出现。