Python Scrapy中的持久请求元数据

Python Scrapy中的持久请求元数据,python,scrapy,Python,Scrapy,我有没有办法在spider中保存持久请求元数据request.meta只会持续到下一次回调,我必须执行以下操作: def method1(self, response): request = Request(url, callback=self.method2) request.meta['persist'] = ... yield request def method2(self, response): ... request = Request(

我有没有办法在spider中保存持久请求元数据
request.meta
只会持续到下一次回调,我必须执行以下操作:

def method1(self, response):
    request = Request(url, callback=self.method2)
    request.meta['persist'] = ...

    yield request

def method2(self, response):
    ...

    request = Request(url, callback=self.method3)
    request.meta['persist'] = response.meta['persist']

    yield request
我还做了一个装饰师来做这个,但我真的希望有一个更干净的解决方案:

def persist_meta(callback):
    def inner(self, *args, **kwargs):
        for result in callback(self, *args, **kwargs):
            if isinstance(result, Request):
                response = args[0]

                persist = response.meta.get('persist', {})
                persist.update(result.meta.get('persist', {})

                result.meta['persist'] = persist

            yield result

    return inner
非常感谢您的帮助。

创建一个新代码,并将您的代码持久保存在
进程\u spider\u输入中。