Python 刮擦-激活项目管道组件-项目管道设置

Python 刮擦-激活项目管道组件-项目管道设置,python,scrapy,settings,pipeline,Python,Scrapy,Settings,Pipeline,在scrapy文档中有以下信息: 激活项目管道组件 要激活项目管道组件,必须将其类添加到 项目\u管道设置,如以下示例所示: 项目_管道={ “myproject.Pipeline.PricePipeline”:300, 'myproject.pipelines.JsonWriterPipeline':800,} 在此设置中指定给类的整数值决定 它们运行的顺序-项目通过管道从订单号低到 高。通常将这些数字定义在0-1000范围内 我不理解最后一段,主要是“确定 它们运行的顺序-项目通过管道从订单

在scrapy文档中有以下信息:

激活项目管道组件

要激活项目管道组件,必须将其类添加到 项目\u管道设置,如以下示例所示:

项目_管道={ “myproject.Pipeline.PricePipeline”:300, 'myproject.pipelines.JsonWriterPipeline':800,}

在此设置中指定给类的整数值决定 它们运行的顺序-项目通过管道从订单号低到 高。通常将这些数字定义在0-1000范围内

我不理解最后一段,主要是“确定 它们运行的顺序-项目通过管道从订单号低到 “高”,你能用别的话解释吗?选择数字是因为什么?在0-1000范围内如何选择值?

项目(u)管道

默认值:{}

包含要使用的项目管道及其顺序的dict。这个 默认情况下,dict为空。顺序值是任意的,但这是惯例 将其定义在0-1000范围内


由于Python中的字典是一个无序的集合,
项目管道
必须是一个字典(正如许多其他设置一样,例如
SPIDER\u中间件
),因此您需要以某种方式定义应用管道的顺序。这就是为什么需要为定义的每个管道分配一个从0到1000的数字

仅供参考,如果您查看Scrapy source,您将发现为每个设置调用的函数,如
项目管道
——它使用字典值排序,从您在
项目管道
中定义的字典中生成一个列表(有序集合):

def build_component_list(base, custom):
    """Compose a component list based on a custom and base dict of components
    (typically middlewares or extensions), unless custom is already a list, in
    which case it's returned.
    """
    if isinstance(custom, (list, tuple)):
        return custom
    compdict = base.copy()
    compdict.update(custom)
    items = (x for x in six.iteritems(compdict) if x[1] is not None)
    return [x[0] for x in sorted(items, key=itemgetter(1))]