【问题标题】:How to retrieve scrpy job id within method?如何在方法中检索 scrpy 作业 ID?
【发布时间】:2020-05-16 15:34:33
【问题描述】:

我正在尝试通过 spider_close 方法获取一个 scrapy 2.1.x 作业的作业 ID:

 class mysql_pipeline(object):
    import os
    def test:
       print(os.environ['SCRAPY_JOB'])

很遗憾,这会导致关键错误:

 ERROR: Scraper close failure
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/Users/andy/spider2/crawler/pipelines.py", line 137, in close_spider
    os.environ['SCRAPY_JOB'],
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/os.py", line 675, in __getitem__
    raise KeyError(key) from None
KeyError: 'SCRAPY_JOB'
2020-05-16 17:24:52 [scrapy

如何在方法中提取作业 ID?

【问题讨论】:

标签: scrapy scrapyd


【解决方案1】:

在蜘蛛构造函数中(在init内), 添加行-->

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

然后在解析函数中传入item,

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

在管道中添加这个 -->

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

def close_spider(self, spider):
    print(self.jobId)
    ......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多