Django rest框架并行执行很多= True字段数据

Django rest框架并行执行很多= True字段数据

问题描述:

我有一个序列化程序,因为我已经重写了validate方法。Django rest框架并行执行很多= True字段数据

class ProcessItemSerializer(serializers.Serializer): 
    field1 = serializers.CharField(max_length=63) 
    # Few more fields 

    def validate(self, data): 
     # few data processing and HTTP calls 
     return data 

我有使用上面作为串行字段many=True

class DataSerializer(serializers.Serializer): 
    items = ProcessItemSerializer(many=True) 

如果我通过项的数据以DataSerializer列表它将处理逐个每个项目另一个串行器。这是可取的!

但是如果物品的长度超过100则需要很多时间。我想要的是使用python-multiprocess并行执行20-20个项目集,以便减少总体时间。

我该如何在DRF中做到这一点。我必须重写什么方法?

+0

这不是一个微不足道的任务。你能解释一下你正在做什么类型的验证?优化它会容易得多,而不是尝试任何形式的分布式处理。 –

+0

使用IO处理多处理并不是一个好主意,你应该使用协同(gevent) – hadi

+0

正确地提到@hadi,你的验证是I/O绑定的,所以多处理不会帮你太多。 –

您应该可以通过重写ListSerializer并更具体地说是to_internal_value方法来并行处理。

因此,它应该是这个样子:

class ProcessItemListSerializer(ListSerializer): 
    def to_internal_value(self, data): 
     .... 


class ProcessItemSerializer(serializers.Serializer): 
    field1 = serializers.CharField(max_length=63) 
    # Few more fields 
    class Meta: 
     list_serializer_class = ProcessItemListSerializer 

    def validate(self, data): 
     # few data processing and HTTP calls 
     return data 

to_internal_value,你可能需要将代码复制开始直到for item in data:有构建由大块验证...