Невозможно измерить производительность сериализатора с помощью cProfile
Я пытаюсь использовать cProfile
для сравнения между serializers.ModelSerializer
и serializers.Serializer
в соответствии с этим учебником .
Пожалуйста, ознакомьтесь с учебником, прежде чем продолжить чтение, это будет полезно для вас!
Сериализаторы:
from django.contrib.auth.models import User
from rest_framework import serializer
class UserModelSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = [
'id',
'username',
]
class UserSerializer(serializers.Serializer):
id = serializers.IntegerField()
username = serializers.CharField()
Просмотров:
from . serializers import UserModelSerializer, UserSerializer
from rest_framework.response import Response
from rest_framework.views import APIView
import cProfile
class TestApi(APIView):
def get(self, request):
u = User.objects.get(username='hamza')
assert u.username == 'hamza' # just to ensure it fetches the user
data = UserModelSerializer(u).data
cProfile.run('for _ in range(5000): data')
return Response(data)
В views
я просто создаю GET
конечную точку и пытаюсь запустить cProfile
но это дает мне ошибку:
NameError: name 'data' is not defined
но если я закомментирую строку cProfile.run('for _ in range(5000): data')
в views
и попробуйте получить доступ к data
и отправить его в Response
без использования cProfile
это будет работать нормально!
Итак, вопрос в том, почему cProfile
не видит UserModelSerializer
?