2012-03-11 10 views
8

Framework Scrapy - server Scrapyd.Scrapyd valore jobid all'interno spider

Ho qualche problema con l'ottenimento del valore di jobid all'interno dello spider.

Dopo Pubblica dati http://localhost:6800/schedule.json la risposta è

status = ok 
jobid = bc2096406b3011e1a2d0005056c00008 

ma devo usare questo jobid all'interno del ragno corrente durante il processo. Può essere utilizzato per aprire il file {jobid} .log o altri motivi dinamici.

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 

Ma vedo questo jobid solo dopo che l'operazione è finihed :(Grazie!

risposta

5

Credo che ci sia un modo più semplice, ma è possibile estrarre id lavoro da argomenti della riga di comando. IIRC, scrapyd lancia un . ragno dando un jobid nei parametri Basta esplorare sys.args in cui è necessario jobid

+1

Tutto il genio è facile;) Grazie, amico! Qualche esempio: 'if (len (sys.argv)> 2): if ('_job' in sys.argv [3]): self.jobid = sys.argv [3] .rsplit (' = ') ' – fcmax

+0

@Maxim, è contento che abbia funzionato. Per favore, non dimenticare di accettare e revocare le risposte che hanno funzionato per te. – warvariuc

+0

Richiede 15 punti di reputazione. Tornerò su questo post dopo un po 'di crescita;) Grazie. – fcmax

5

è possibile ottenere dal SCRAPY_JOBvariabile di ambiente:.

os.environ['SCRAPY_JOB']