From 32b14c11d6ca14df777d6376d68d00001b1a2cdf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Sun, 3 Dec 2017 22:15:41 +0100 Subject: [PATCH] Show waiting celery tasks in admin interface --- mygpo/administration/views.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/mygpo/administration/views.py b/mygpo/administration/views.py index 0c9b5c68..d351421c 100644 --- a/mygpo/administration/views.py +++ b/mygpo/administration/views.py @@ -4,6 +4,8 @@ from itertools import count, chain from collections import Counter from datetime import datetime +import redis + import django from django.shortcuts import render from django.contrib import messages @@ -57,13 +59,6 @@ class HostInfo(AdminView): hostname = socket.gethostname() django_version = django.VERSION - i = celery.control.inspect() - scheduled = i.scheduled() - if not scheduled: - num_celery_tasks = None - else: - num_celery_tasks = sum(len(node) for node in scheduled.values()) - feed_queue_status = self._get_feed_queue_status() num_index_outdated = self._get_num_outdated_search_index() @@ -73,11 +68,22 @@ class HostInfo(AdminView): 'base_dir': base_dir, 'hostname': hostname, 'django_version': django_version, - 'num_celery_tasks': num_celery_tasks, + 'num_celery_tasks': self._get_waiting_celery_tasks(), 'feed_queue_status': feed_queue_status, 'num_index_outdated': num_index_outdated, }) + def _get_waiting_celery_tasks(self): + con = celery.broker_connection() + + args = {'host': con.hostname} + if con.port: + args['port'] = con.port + + r = redis.StrictRedis(**args) + return r.llen('celery') + + def _get_feed_queue_status(self): now = datetime.utcnow() next_podcast = Podcast.objects.all().order_by_next_update().first() -- 2.11.4.GIT