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 %}
<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 %}
<section class="block content">
<h2>{% trans "Queues" %}</h2>

View file

@ -334,6 +334,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(),

View file

@ -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

View file

@ -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(status=500)