feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra
This commit is contained in:
+10
-7
@@ -1,6 +1,7 @@
|
||||
from rest_framework import status
|
||||
from rest_framework.views import APIView
|
||||
from adrf.views import APIView
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from asgiref.sync import sync_to_async
|
||||
|
||||
from utils.response_codes import (
|
||||
ResponseCode,
|
||||
@@ -17,13 +18,14 @@ from ..serializers.user_serializers import (
|
||||
class SendPhoneCodeAPIView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
async def post(self, request):
|
||||
serializer = SendPhoneCodeSerializer(
|
||||
data=request.data,
|
||||
context={'request': request}
|
||||
)
|
||||
|
||||
if not serializer.is_valid():
|
||||
# 校验/save 内含 cache 写入,线程池兜底
|
||||
if not await sync_to_async(serializer.is_valid)():
|
||||
errors = serializer.errors
|
||||
first_error = ''
|
||||
for field, msgs in errors.items():
|
||||
@@ -39,7 +41,7 @@ class SendPhoneCodeAPIView(APIView):
|
||||
)
|
||||
|
||||
try:
|
||||
phone = serializer.save()
|
||||
phone = await sync_to_async(serializer.save)()
|
||||
return create_standardized_response(
|
||||
data={'phone_sent': True},
|
||||
code=ResponseCode.SUCCESS,
|
||||
@@ -56,13 +58,14 @@ class SendPhoneCodeAPIView(APIView):
|
||||
class ChangePhoneAPIView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
async def post(self, request):
|
||||
serializer = ChangePhoneSerializer(
|
||||
data=request.data,
|
||||
context={'request': request}
|
||||
)
|
||||
|
||||
if not serializer.is_valid():
|
||||
# 校验/save 内含 cache 读写与 user.save() ORM 调用,线程池兜底
|
||||
if not await sync_to_async(serializer.is_valid)():
|
||||
errors = serializer.errors
|
||||
first_error = ''
|
||||
for field, msgs in errors.items():
|
||||
@@ -78,7 +81,7 @@ class ChangePhoneAPIView(APIView):
|
||||
)
|
||||
|
||||
try:
|
||||
updated_user = serializer.save()
|
||||
updated_user = await sync_to_async(serializer.save)()
|
||||
user_serializer = UserSerializer(updated_user)
|
||||
|
||||
return create_standardized_response(
|
||||
|
||||
Reference in New Issue
Block a user