feat: 100% async - native async serializers (adata/asave/acreate), async cache (redis.asyncio), view call-site migration
This commit is contained in:
+9
-11
@@ -42,9 +42,9 @@ class MessageListView(APIView):
|
||||
if msg_type == 'system':
|
||||
queryset = SystemMessage.objects.all()
|
||||
|
||||
def _paginate_system():
|
||||
async def _paginate_system():
|
||||
paginator = MessagePagination()
|
||||
page = paginator.paginate_queryset(queryset, request)
|
||||
page = await sync_to_async(paginator.paginate_queryset)(queryset, request)
|
||||
read_ids = set(
|
||||
SystemMessageRead.objects.filter(
|
||||
user=request.user,
|
||||
@@ -52,10 +52,9 @@ class MessageListView(APIView):
|
||||
).values_list('system_message_id', flat=True)
|
||||
)
|
||||
serializer = SystemMessageSerializer(page, many=True, context={'request': request, 'read_ids': read_ids})
|
||||
return paginator.get_paginated_response(serializer.data).data
|
||||
return paginator.get_paginated_response(await serializer.adata).data
|
||||
|
||||
# 兜底:DRF 分页器与 SystemMessageSerializer 内部为同步调用
|
||||
data = await sync_to_async(_paginate_system)()
|
||||
data = await _paginate_system()
|
||||
return create_standardized_response(data=data, code=ResponseCode.SUCCESS)
|
||||
|
||||
valid_types = ['reply', 'at_me', 'like']
|
||||
@@ -64,14 +63,13 @@ class MessageListView(APIView):
|
||||
else:
|
||||
queryset = Message.objects.filter(recipient=request.user)
|
||||
|
||||
def _paginate_messages():
|
||||
async def _paginate_messages():
|
||||
paginator = MessagePagination()
|
||||
page = paginator.paginate_queryset(queryset, request)
|
||||
page = await sync_to_async(paginator.paginate_queryset)(queryset, request)
|
||||
serializer = MessageListSerializer(page, many=True, context={'request': request})
|
||||
return paginator.get_paginated_response(serializer.data).data
|
||||
return paginator.get_paginated_response(await serializer.adata).data
|
||||
|
||||
# 兜底:DRF 分页器与 MessageListSerializer(obj.sender 外键访问)内部为同步调用
|
||||
data = await sync_to_async(_paginate_messages)()
|
||||
data = await _paginate_messages()
|
||||
return create_standardized_response(data=data, code=ResponseCode.SUCCESS)
|
||||
|
||||
|
||||
@@ -294,5 +292,5 @@ class SystemMessageDetailView(APIView):
|
||||
|
||||
serializer = SystemMessageDetailSerializer(system_message, context={'request': request})
|
||||
# 兜底:SystemMessageDetailSerializer.get_is_read 内部有同步 ORM exists() 查询
|
||||
data = await sync_to_async(lambda: serializer.data)()
|
||||
data = await serializer.adata
|
||||
return create_standardized_response(data=data, code=ResponseCode.SUCCESS)
|
||||
|
||||
Reference in New Issue
Block a user