2012-03-11 191 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']