蜘蛛内的Scrapyd jobid值

时间:2012-03-11 04:28:08

标签: python scrapy scrapyd

Framework Scrapy - Scrapyd服务器。

我在蜘蛛中获取jobid值有一些问题。

将数据发布到http://localhost:6800/schedule.json后,响应为

status = ok
jobid = bc2096406b3011e1a2d0005056c00008

但我需要在此过程中在当前蜘蛛中使用此jobid。它可以用于open {jobid} .log文件或其他动态原因。

class SomeSpider(BaseSpider):
    name = "some"
    start_urls = ["http://www.example.com/"]
    def parse(self, response):
        items = []
        for val in values:
            item = SomeItem()
            item['jobid'] = self.jobid # ???!
            items.append(item)
        return items

但是只有在完成任务后我才会看到这个工作:(谢谢!

4 个答案:

答案 0 :(得分:5)

我想有一种更简单的方法,但您可以从命令行参数中提取作业ID。 IIRC,scrapyd发布一只蜘蛛,给它一个参数。只需探索您需要jobid的sys.args

答案 1 :(得分:5)

您可以从SCRAPY_JOB 环境变量

获取它
os.environ['SCRAPY_JOB']

答案 2 :(得分:0)

截至2020年11月(以及更早的时间),

os.environ['SHUB_JOBKEY']

答案 3 :(得分:0)

在spider.py中 -->

class SomeSpider(BaseSpider):
    name = "some"
    start_urls = ["http://www.example.com/"]

    def __init__(self, *args, **kwargs):
        super(SomeSpider, self).__init__(*args, **kwargs)
        self.jobid = kwargs.get('_job')

    def parse(self, response):
        items = []
        for val in values:
           item = SomeItem()
           item['jobid'] = self.jobid # ???!
           items.append(item)
        return items