是否有可能让 uwsgi 在 500 错误时重新启动

是否有可能让 uwsgi 在 500 错误时重新启动

我偶尔会遇到数据库重新启动或类似问题。在这种情况下,我需要进入并手动重新启动 uwsgi。

是否可以设置 uwsgi 在出现 500 个错误时重新启动?理想情况下,我可以让工作程序在出现一定数量的 500 个错误时重新启动,而不是在出现每个错误时重新启动。

答案1

您可以使用度量子系统,添加一个计数 500 个错误的度量标准。

指标可以有一个触发警报的阈值(在您的情况下是重新加载)

[uwsgi]

http-socket = :9092

; reload the instance when touching
touch-reload = /tmp/restart

; create a new alarm restarting the instance
alarm = database_reloaded cmd:touch /tmp/restart

; create a metric for couting 500s
metric = 500counter
; create a metric threshold, resetting the metric to 0 when hitting 5
; the metric alarm triggers the restart of the instance too
metric-alarm = key=500counter,value=5,alarm=database_reloaded,rate=60,reset=0

; increment metric whenever a 500 is generated
final-route-status = 500 metricinc:500counter

相关内容