Merge pull request #2639 from bookwyrm-social/celery-ping

Celery ping
This commit is contained in:
Christof Dorner 2023-02-03 09:40:25 +01:00 committed by GitHub
commit f9a916db09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 1 deletions

View file

@ -9,6 +9,14 @@
{% block panel %} {% block panel %}
<div class="notification">
<p>
{% trans "You can set up monitoring to check if Celery is running by querying:" %}
{% url "settings-celery-ping" as url %}
<a href="{{ url }}" target="_blank" rel="nofollow noopener noreferrer">{{ url }}</a>
</p>
</div>
{% if queues %} {% if queues %}
<section class="block content"> <section class="block content">
<h2>{% trans "Queues" %}</h2> <h2>{% trans "Queues" %}</h2>

View file

@ -334,6 +334,9 @@ urlpatterns = [
re_path( re_path(
r"^settings/celery/?$", views.CeleryStatus.as_view(), name="settings-celery" 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( re_path(
r"^settings/email-config/?$", r"^settings/email-config/?$",
views.EmailConfig.as_view(), views.EmailConfig.as_view(),

View file

@ -4,7 +4,7 @@ from .admin.announcements import Announcements, Announcement
from .admin.announcements import EditAnnouncement, delete_announcement from .admin.announcements import EditAnnouncement, delete_announcement
from .admin.automod import AutoMod, automod_delete, run_automod from .admin.automod import AutoMod, automod_delete, run_automod
from .admin.automod import schedule_automod_task, unschedule_automod_task 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.dashboard import Dashboard
from .admin.federation import Federation, FederatedServer from .admin.federation import Federation, FederatedServer
from .admin.federation import AddFederatedServer, ImportServerBlocklist from .admin.federation import AddFederatedServer, ImportServerBlocklist

View file

@ -1,8 +1,10 @@
""" celery status """ """ celery status """
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.http import HttpResponse
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.views import View from django.views import View
from django.views.decorators.http import require_GET
import redis import redis
from celerywyrm import settings from celerywyrm import settings
@ -50,3 +52,18 @@ class CeleryStatus(View):
"errors": errors, "errors": errors,
} }
return TemplateResponse(request, "settings/celery.html", data) 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(status=500)