小编Hay*_*emi的帖子

Django Rest框架ModelSerializer运行太慢

我们想为我们的 django 项目提供一个 api,所以我们使用 drf (django Rest Framework)。我们使用 ModelSerializer,它提供了一种快捷方式,可让您自动创建一个具有与模型字段对应的字段的序列化器类。我们的问题是它运行得很慢。换句话说,序列化过程大约需要 40 秒才能检索到响应。

我们怎样才能减少这种延迟呢?
看法

class MyObjViewSet(viewsets.ModelViewSet):

    pagination_class = LargeResultsSetPagination

    def get_queryset(self):
        queryset = MyObj.objects.all().order_by('time')
        return queryset

    serializer_class = MyObjSerializer
Run Code Online (Sandbox Code Playgroud)

我的对象模型

class MyObj(models.Model):
    id = models.BigIntegerField(primary_key=True)
    time = models.DateTimeField()
    type = models.CharField(max_length=5)
    user = models.ForeignKey('User', related_name='myobj')
Run Code Online (Sandbox Code Playgroud)

MyObj 用户模型

class User(models.Model):
    id = models.IntegerField(primary_key=True)
    username = models.CharField(max_length=80)
Run Code Online (Sandbox Code Playgroud)

我的 Obj 序列化器

class MyObjSerializer(serializers.ModelSerializer):

    class Meta:
        model = MyObj
        fields = ('id', 'type', 'time', 'user')
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我想检索 obj 列表时,大约需要 40 秒!

django performance django-rest-framework

3
推荐指数
1
解决办法
5057
查看次数