在废纸管道中使用Scrapyd Job ID



我已经实施了一个正在使用Scrapyd API触发废品蜘蛛的Web应用程序(Web App和Scrapyd正在同一服务器上运行(。

我的Web应用程序正在存储DB中的Scrapyd返回的工作ID。我的蜘蛛将物品存储在dB中。

问题是:我如何在DB中链接Scrapyd发行的工作ID和爬网发行的项目?

我可以使用额外的参数触发蜘蛛 - 假设我的Web应用程序生成的ID - 但我不确定这是最好的解决方案。最后,如果Scrapyd发行它,则无需创建该ID ...

感谢您的帮助

这个问题应该被称为"我如何在运行时获得Scrapyd任务的工作ID?"

当Scrapyd运行蜘蛛时,它实际上会给蜘蛛作为一个论点。应该始终是sys.args的最后一个参数。

os.environ['SCRAPY_JOB']应该做这个问题。

在蜘蛛构造器中添加行 - >

self.jobId = kwargs.get('_job')

然后在解析功能中通过该项目,

def parse(self, response):
    data = {}
    ......
    yield data['_job']

在管道中添加此 - >

def process_item(self, item, spider):
    self.jobId = item['jobId']
    .......

相关内容

  • 没有找到相关文章

最新更新