diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml index 95a0ebfb0..4e7be4af3 100644 --- a/.github/workflows/black.yml +++ b/.github/workflows/black.yml @@ -13,3 +13,5 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 - uses: psf/black@22.12.0 + with: + version: 22.12.0 diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 6dd8a3081..0e04ffaf2 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -1,5 +1,6 @@ """ functionality outline for a book data connector """ from abc import ABC, abstractmethod +from urllib.parse import quote_plus import imghdr import logging import re @@ -48,7 +49,7 @@ class AbstractMinimalConnector(ABC): return f"{self.isbn_search_url}{normalized_query}" # NOTE: previously, we tried searching isbn and if that produces no results, # searched as free text. This, instead, only searches isbn if it's isbn-y - return f"{self.search_url}{query}" + return f"{self.search_url}{quote_plus(query)}" def process_search_response(self, query, data, min_confidence): """Format the search results based on the formt of the query""" 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 5050e029a..3fbf7dda1 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -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(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index b1ab977a7..808113099 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..8c6b9f5a3 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(status=500) diff --git a/dev-tools/requirements.txt b/dev-tools/requirements.txt index a84bf64b2..a69d319ab 100644 --- a/dev-tools/requirements.txt +++ b/dev-tools/requirements.txt @@ -1 +1 @@ -black==22.3.0 +black==22.12.0 diff --git a/requirements.txt b/requirements.txt index e71fb52c8..ab45e08a4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ aiohttp==3.8.3 bleach==5.0.1 celery==5.2.7 colorthief==0.2.1 -Django==3.2.16 +Django==3.2.17 django-celery-beat==2.4.0 django-compressor==4.3.1 django-imagekit==4.1.0