Как увеличить время отклика в Django rest framework с помощью Celery?
Я пытаюсь увеличить возможности фреймворка отдыха Django для обработки большего количества запросов. Я обернул свой Django rest framework с помощью Celery. Есть предложения, как еще больше увеличить обработку количества RPS?
Вот мой код
from celery import current_app
from rest_framework.decorators import api_view
class SomeViewSet(viewsets.ModelViewSet):
queryset = SomeModel.objects.all()
serializer_class = SomeSerializer
@api_view(('POST',))
def some_post_request(request):
serializer = serializer_class(data=request.data)
if serializer.is_valid():
address = serializer.validated_data['somedata']
file_path = "usr/"
with open(file_path, 'wb+') as fp:
for chunk in address:
fp.write(chunk)
result = some_function.delay(file_path, address)
return JsonResponse({"task_id": result.id,
"task_status": result.status},
status=status.HTTP_200_OK)
@api_view(('GET',))
def some_get_request(request, task_id):
task = current_app.AsyncResult(task_id)
context = {'task_status': task.status, 'task_id': task.id}
if task.status == 'PENDING':
return Response({**context}, status=status.HTTP_200_OK)
else:
response_data = task.get()
print(response_data)
return Response({**context, **response_data}, status=status.HTTP_201_CREATED)
Буду признателен за полные ответы о том, как еще больше повысить производительность celery и Django rest framework, либо изменив приведенный выше код, либо предложив библиотеки, которые вы использовали.
Например, я попробовал использовать следующее, и это снизило мой RPS с 800 до 450.
from asgiref.sync import sync_to_async
@sync_to_async
@api_view(('POST',))
def some_post_request(request):