Browse Source

Display celery status in admin overview

Peter Justin 8 years ago
parent
commit
90e30c72eb
2 changed files with 29 additions and 2 deletions
  1. 12 2
      flaskbb/management/views.py
  2. 17 0
      flaskbb/templates/management/overview.html

+ 12 - 2
flaskbb/management/views.py

@@ -10,6 +10,7 @@
 """
 import sys
 
+from celery import __version__ as celery_version
 from flask import (Blueprint, current_app, request, redirect, url_for, flash,
                    jsonify, __version__ as flask_version)
 from flask_login import current_user, login_fresh
@@ -24,7 +25,7 @@ from flaskbb.utils.settings import flaskbb_config
 from flaskbb.utils.requirements import (IsAtleastModerator, IsAdmin,
                                         CanBanUser, CanEditUser,
                                         IsAtleastSuperModerator)
-from flaskbb.extensions import db, allows
+from flaskbb.extensions import db, allows, celery
 from flaskbb.utils.helpers import (render_template, time_diff, time_utcnow,
                                    get_online_users)
 from flaskbb.user.models import Guest, User, Group
@@ -59,7 +60,14 @@ def overview():
     else:
         online_users = len(get_online_users())
 
+    celery_inspect = celery.control.inspect()
+    celery_running = True if celery_inspect.ping() else False
+    python_version = "{}.{}.{}".format(
+        sys.version_info[0], sys.version_info[1], sys.version_info[2]
+    )
+
     stats = {
+        "current_app": current_app,
         # user stats
         "all_users": User.query.count(),
         "banned_users": banned_users,
@@ -71,7 +79,9 @@ def overview():
         "post_count": Post.query.count(),
         # misc stats
         "plugins": get_all_plugins(),
-        "python_version": "%s.%s" % (sys.version_info[0], sys.version_info[1]),
+        "python_version": python_version,
+        "celery_version": celery_version,
+        "celery_running": celery_running,
         "flask_version": flask_version,
         "flaskbb_version": flaskbb_version
     }

+ 17 - 0
flaskbb/templates/management/overview.html

@@ -21,10 +21,17 @@
                     <div class="row stats-row">
                         <div class="col-md-12 col-sm-12 col-xs-12">
                             <!-- TODO: (Later) Show new reports, updates, etc -->
+                            {% if not celery_running %}
+                            <div class="alert-message alert-message-danger">
+                                <h4>{% trans %}There is a problem.{% endtrans %}</h4>
+                                <p>{% trans config_path=current_app.config["CONFIG_PATH"] %}Celery is <strong>not</strong> running. You can start celery with this command <code>flaskbb --config {{ config_path }} celery worker</code>{% endtrans %}</p>
+                            </div>
+                            {% else %}
                             <div class="alert-message alert-message-success">
                                 <h4>{% trans %}Everything seems alright.{% endtrans %}</h4>
                                 <p>{% trans %}No new notifications.{% endtrans %}</p>
                             </div>
+                            {% endif %}
                         </div>
                     </div>
                     <div class="row stats-row">
@@ -104,6 +111,16 @@
                             </div>
                             -->
                             <div class="row stats-item">
+                                <div class="key pull-left">Celery</div><div class="value pull-right">
+                                {% if celery_running %}
+                                    <span class="text-success"><strong>running</strong></span>
+                                {% else %}
+                                <span class="text-danger"><strong>not running</strong></span>
+                                {% endif %}
+                                {{ celery_version }}
+                                </div>
+                            </div>
+                            <div class="row stats-item">
                                 <div class="key pull-left">Flask</div><div class="value pull-right">{{ flask_version }}</div>
                             </div>
                             <div class="row stats-item">