2012-03-11 94 views
8

框架Scrapy - Scrapyd服务器。蜘蛛内的Scrapyd jobid值

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

后数据http://localhost:6800/schedule.json响应后

status = ok 
jobid = bc2096406b3011e1a2d0005056c00008 

但我需要使用过程中,当前蜘蛛这里面作业ID。它可以用于打开{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 

但我看到任务finihed只有在此之后的作业ID :(谢谢!

回答

5

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

+1

所有的天才都很容易;)谢谢,队友! 一些示例: '如果(LEN(sys.argv中)> 2): 如果(在sys.argv中 '_job'[3]): self.jobid = sys.argv中[3] .rsplit(” =')' – fcmax 2012-03-11 20:31:32

+0

@Maxim,很高兴它的工作。请不要忘记接受并提供适合您的答案。 – warvariuc 2012-03-12 05:33:05

+0

它需要15点的声望。经过一段时间后我会回到这个帖子;)谢谢。 – fcmax 2012-03-12 12:53:41

5

您可以从SCRAPY_JOB环境变量得到它:

os.environ['SCRAPY_JOB']