如果您使用的是 SENTRY ON-PREMISE,如果工作进程未运行或您的队列未备份,则可能会发生这种情况。官方文档说:
Sentry 带有一个内置队列,可以以更异步的方式处理任务。例如,当一个事件出现而不是立即将其写入数据库时,它会向队列发送一个作业,以便可以立即返回请求,并且后台工作人员会实际处理保存该数据。
请注意,它依赖 Celery 库来管理工人。所以从 CLI 运行一个 worker 可能会解决这个问题:
$ sentry celery worker
建议将其作为服务运行,使用主管的示例配置:
[program:sentry-worker]
directory=/www/sentry/
command=/www/sentry/bin/sentry celery worker -l WARNING
autostart=true
autorestart=true
redirect_stderr=true
killasgroup=true
Sentry 支持两个主要代理,可以根据您的工作量进行调整:
RabbitMQ and `Redis`
.
雷迪斯
默认代理是 Redis,可以在大多数情况下工作。使用 Redis 的主要限制是所有待处理的工作必须适合内存。
BROKER_URL = "redis://localhost:6379/0"
如果您的 Redis 连接需要密码进行身份验证,则需要使用以下格式:
BROKER_URL = "redis://:password@localhost:6379/0"
兔MQ
如果您在高负载下运行,或者担心将待处理的负载放入内存中,那么 RabbitMQ 是支持 Sentry 工作人员的理想人选。
BROKER_URL = "amqp://guest:guest@localhost:5672/sentry"