feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra

This commit is contained in:
async-upgrade
2026-09-06 14:26:17 +08:00
parent 9a6577f71e
commit 8f488fcaaa
55 changed files with 2224 additions and 1513 deletions
+10 -7
View File
@@ -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(