2012-03-11 13 views
8

Framework Scrapy - Servidor de Scrapyd.Valor de Scrapyd jobid dentro de la araña

Tengo algún problema para obtener el valor de jobid dentro de la araña.

Después datos de envío a http://localhost:6800/schedule.json la respuesta es

status = ok 
jobid = bc2096406b3011e1a2d0005056c00008 

pero necesito utilizar este jobid dentro de la araña de corriente durante el proceso. Se puede utilizar para el archivo abierto {jobid} .log u otras razones dinámicas.

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 

Pero veo esto jobid sólo después se finihed la tarea :(Gracias!

Respuesta

5

supongo que es una forma más fácil, pero se puede extraer ID de trabajo de argumentos de línea de comandos. IIRC, scrapyd lanza una . araña dándole un jobid en los parámetros Sólo explorar sys.args donde se necesita jobid

+1

Todo genio es fácil;) ¡Gracias, amigo! Algunos ejemplo: 'si (len (sys.argv)> 2): si ('_job' en sys.argv [3]): self.jobid = sys.argv [3] .rsplit (' = ') ' – fcmax

+0

@Maxim, me alegro de que funcionó. Por favor, no olvides aceptar y votar las respuestas que funcionó para ti. – warvariuc

+0

Requiere 15 puntos de reputación. Regresaré a esta publicación después de un poco de crecimiento;) Gracias. – fcmax

5

se puede conseguir desde el entorno SCRAPY_JOB variables:.

os.environ['SCRAPY_JOB'] 
Cuestiones relacionadas