2012-03-11 16 views
8

Scrapy ram - Scrapyd serwer.Scrapyd jobid wartość wewnątrz pająka

Mam pewien problem z uzyskaniem wartości jobidowej wewnątrz pająka.

Po danych Posta do http://localhost:6800/schedule.json odpowiedź jest

status = ok 
jobid = bc2096406b3011e1a2d0005056c00008 

Ale muszę użyć tego identyfikatorowi zadania wewnątrz bieżącego pająka w trakcie procesu. Może być używany do otwartego pliku {workid} .log lub innych przyczyn dynamicznych.

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 

Ale widzę tę identyfikatorowi zadania dopiero po wykonaniu zadania finihed :(dzięki!

Odpowiedz

5

Chyba istnieje prostszy sposób, ale można wyodrębnić identyfikator zadania z argumentami wiersza poleceń. IIRC, scrapyd wszczyna . pająk nadając jej identyfikatorowi zadania w parametrach Wystarczy zbadać sys.args gdzie trzeba identyfikatorowi zadania

+1

Wszystkie geniusze są łatwe;) Dzięki, kolego! Kilka przykładów: 'if (len (sys.argv)> 2) jeśli ('_job' w sys.argv [3]): self.jobid = sys.argv [3] .rsplit (” = ') ' – fcmax

+0

@ Maxim, cieszę się, że zadziałało. Proszę nie zapomnieć o przyjęciu i przegłosowaniu odpowiedzi, które sprawdziły się. – warvariuc

+0

Wymaga 15 punktów reputacji. Wrócę do tego postu po pewnym wzroście;) Dziękuję. – fcmax

5

można go pobrać ze środowiska SCRAPY_JOBzmiennej.

os.environ['SCRAPY_JOB'] 
Powiązane problemy