添加 django_prometheus 个中间件导致 500(服务器错误)

Adding django_prometheus middlewares cause 500 (server error)

我想用 prometheus 监控我的 django 应用程序,我添加了 django-prometheus(2.1.0) 然后我的所有请求,除了 /metricsDEBUG=FALSE 时导致 500。我不明白为什么它只适用于 DEBUG=TRUE.

    # 'django_prometheus.middleware.PrometheusBeforeMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # 'django_prometheus.middleware.PrometheusAfterMiddleware',

我的中间件有问题吗?

-----更新: 我在 DEBUG=FALSE 时所做的唯一一件事是:

if not DEBUG:
    sentry_sdk.init(
        "<sentry_url>",
        integrations=[DjangoIntegration()]
    )

我的模型也使用了 django_prometheus.models.ExportModelOperationsMixin

相关要求版本:

   sentry-sdk==0.14.3
   django-prometheus==2.1.0

问题不是因为django-prometheus中间件。其实是sentry-sdk版本的问题。这是相关的issue。这个问题在0.16版本的sentry-sdk中已经修复,所以我更新了sentry-sdk版本并解决了。