2012-03-11 3 views
8

Рамка Scrapy - Scrapyd сервер.Scrapyd значение рабочей силы внутри паука

У меня есть проблема с получением значения полезности внутри паука.

После отправки данных 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 только после того, как задача finihed :(Спасибо!

ответ

5

Я предполагаю, что есть более простой способ, но вы можете извлечь идентификатор задания из командной строки арг. IIRC, scrapyd запускает . паук дает ему JobId в параметрах Просто изучить sys.args где вам нужно JobId

+1

Все гения легко;) Спасибо, приятель! Некоторые примеры: ', если (LEN (sys.argv)> 2): , если ('_job' в sys.argv [3]): self.jobid = sys.argv [3] .rsplit (» = ') ' – fcmax

+0

@Maxim, рад, что это сработало. Пожалуйста, не забудьте принять и перенести ответы, которые сработали для вас. – warvariuc

+0

Он требует 15 очков репутации. Я вернусь к этому сообщению после некоторого роста;) Спасибо. – fcmax

5

вы можете получить его от SCRAPY_JOBпеременной среды:.

os.environ['SCRAPY_JOB']