From c1090703e2f25901657fc7aac8ef543b8ba7408b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 30 Jan 2023 08:27:40 -0800 Subject: [PATCH 1/3] Adds a ping-able celery url This will let admins set up a check to notify you if celery is not running. --- bookwyrm/urls.py | 3 +++ bookwyrm/views/__init__.py | 2 +- bookwyrm/views/admin/celery_status.py | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 73bdd3755..9828936e1 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -329,6 +329,9 @@ urlpatterns = [ re_path( r"^settings/celery/?$", views.CeleryStatus.as_view(), name="settings-celery" ), + re_path( + r"^settings/celery/ping?$", views.celery_ping, name="settings-celery-ping" + ), re_path( r"^settings/email-config/?$", views.EmailConfig.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 353275c46..cbc7998fa 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -4,7 +4,7 @@ from .admin.announcements import Announcements, Announcement from .admin.announcements import EditAnnouncement, delete_announcement from .admin.automod import AutoMod, automod_delete, run_automod from .admin.automod import schedule_automod_task, unschedule_automod_task -from .admin.celery_status import CeleryStatus +from .admin.celery_status import CeleryStatus, celery_ping from .admin.dashboard import Dashboard from .admin.federation import Federation, FederatedServer from .admin.federation import AddFederatedServer, ImportServerBlocklist diff --git a/bookwyrm/views/admin/celery_status.py b/bookwyrm/views/admin/celery_status.py index 0e88f55f1..61fedd341 100644 --- a/bookwyrm/views/admin/celery_status.py +++ b/bookwyrm/views/admin/celery_status.py @@ -1,8 +1,10 @@ """ celery status """ from django.contrib.auth.decorators import login_required, permission_required +from django.http import HttpResponse from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View +from django.views.decorators.http import require_GET import redis from celerywyrm import settings @@ -50,3 +52,18 @@ class CeleryStatus(View): "errors": errors, } return TemplateResponse(request, "settings/celery.html", data) + + +@require_GET +# pylint: disable=unused-argument +def celery_ping(request): + """Just tells you if Celery is on or not""" + try: + ping = celery.control.inspect().ping() + if ping: + return HttpResponse() + # pylint: disable=broad-except + except Exception: + pass + + return HttpResponse(500) From 8f88b72620136fddafbef9e74914b7b373793bdb Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 30 Jan 2023 08:35:24 -0800 Subject: [PATCH 2/3] Adds info about celery endpoint in admin view --- bookwyrm/templates/settings/celery.html | 8 ++++++++ bookwyrm/urls.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/settings/celery.html b/bookwyrm/templates/settings/celery.html index 7ce6553fb..6a3ee6574 100644 --- a/bookwyrm/templates/settings/celery.html +++ b/bookwyrm/templates/settings/celery.html @@ -9,6 +9,14 @@ {% block panel %} +
+

+ {% trans "You can set up monitoring to check if Celery is running by querying:" %} + {% url "settings-celery-ping" as url %} + {{ url }} +

+
+ {% if queues %}

{% trans "Queues" %}

diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 9828936e1..79671edae 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -330,7 +330,7 @@ urlpatterns = [ r"^settings/celery/?$", views.CeleryStatus.as_view(), name="settings-celery" ), re_path( - r"^settings/celery/ping?$", views.celery_ping, name="settings-celery-ping" + r"^settings/celery/ping/?$", views.celery_ping, name="settings-celery-ping" ), re_path( r"^settings/email-config/?$", From fd59fea94ea4b8ca8ba3dc914ccec91e3ee49426 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 2 Feb 2023 16:46:36 -0800 Subject: [PATCH 3/3] Update bookwyrm/views/admin/celery_status.py Co-authored-by: Christof Dorner --- bookwyrm/views/admin/celery_status.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/admin/celery_status.py b/bookwyrm/views/admin/celery_status.py index 61fedd341..8c6b9f5a3 100644 --- a/bookwyrm/views/admin/celery_status.py +++ b/bookwyrm/views/admin/celery_status.py @@ -66,4 +66,4 @@ def celery_ping(request): except Exception: pass - return HttpResponse(500) + return HttpResponse(status=500)