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