Django Channels замерзает при вызове внутреннего API Django-Filters
Я использую django-nextjs, который потребовал от меня установить Django Channels. Теперь все работает нормально, пока мой фронтенд не сделает вызов API к DRF APIView, который в свою очередь сделает вызов API к Django-Filters, чтобы вернуть набор запросов. Это замораживает весь сервер до тех пор, пока соединение не прервется. Есть ли у вас идея, как это можно исправить?
Мой asgi.py
import os
from django.core.asgi import get_asgi_application
from django.urls import re_path, path
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.production')
django_asgi_app = get_asgi_application()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django_nextjs.proxy import NextJSProxyHttpConsumer, NextJSProxyWebsocketConsumer
from django.conf import settings
http_routes = [re_path(r"", django_asgi_app)]
websocket_routers = []
if settings.DEBUG:
http_routes.insert(0, re_path(r"^(?:_next|__next|next).*", NextJSProxyHttpConsumer.as_asgi()))
websocket_routers.insert(0, path("_next/webpack-hmr", NextJSProxyWebsocketConsumer.as_asgi()))
application = ProtocolTypeRouter(
{
# Django's ASGI application to handle traditional HTTP and websocket requests.
"http": URLRouter(http_routes),
"websocket": AuthMiddlewareStack(URLRouter(websocket_routers)),
# ...
}
)
А вот мой APIView с внутренним вызовом API к Django Filters
class SearchAPI(APIView):
permission_classes = []
def get(self, request, *args, **kwargs):
received_params = {}
...
full_request = f"{settings.BASE_URL}api/filter-recipes/?{col_to_search}__icontains={search_term}{additional_filters}"
print('full_request: ', full_request)
response = httpx.get(full_request)
print('response: ', response)
response = response.json()
response = response["results"] if "results" in response else response
...
return Response(json.dumps(final_response))
Все замирает при вызове get: 'response = httpx.get(full_request)', есть ли способ перенастроить мой asgi.py, чтобы позволить внутреннему API быть запущенным и вернуть результат?
Спасибо за ваш вклад!