Fix #2029 -- Drop queue metrics on non-redis brokers (#2030)

The current implementation only works if redis is used as broker.
Otherwise it would throw an Exception, which causes a 500 to be returend.
Now we just don't have celery metrics in those cases.

Fixes #2029
This commit is contained in:
Tim Neumann
2021-04-19 16:34:01 +02:00
committed by GitHub
parent 7d1aeeb6dd
commit bd34dd44a0

View File

@@ -286,7 +286,9 @@ def metric_values():
metrics['pretix_model_instances']['{model="%s"}' % m._meta] = estimate_count_fast(m) metrics['pretix_model_instances']['{model="%s"}' % m._meta] = estimate_count_fast(m)
if settings.HAS_CELERY: if settings.HAS_CELERY:
client = app.broker_connection().channel().client channel = app.broker_connection().channel()
if hasattr(channel, 'client') and channel.client is not None:
client = channel.client
for q in settings.CELERY_TASK_QUEUES: for q in settings.CELERY_TASK_QUEUES:
llen = client.llen(q.name) llen = client.llen(q.name)
lfirst = client.lindex(q.name, -1) lfirst = client.lindex(q.name, -1)