10

框架 Scrapy - Scrapyd 服务器。

我在蜘蛛内部获取 jobid 值时遇到了一些问题。

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

status = ok
jobid = bc2096406b3011e1a2d0005056c00008

但是我需要在这个过程中在当前蜘蛛中使用这个jobid。它可用于打开 {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

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

4

3 回答 3

10

您可以从SCRAPY_JOB 环境变量中获取它:

os.environ['SCRAPY_JOB']
于 2015-01-08T06:32:23.577 回答
6

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

于 2012-03-11T13:48:15.283 回答
1

在 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
于 2021-04-12T08:26:17.560 回答