2012-03-11 18 views
8

Framework Scrapy - Scrapyd server.Giá trị jobyd Scrapyd bên trong spider

Tôi gặp một số vấn đề khi nhận giá trị jobid bên trong con nhện.

Sau bài dữ liệu để http://localhost:6800/schedule.json phản ứng là

status = ok 
jobid = bc2096406b3011e1a2d0005056c00008 

Nhưng tôi cần phải sử dụng jobid này bên trong con nhện hiện nay trong quá trình này. Nó có thể được sử dụng để mở tệp tin {jobid} .log hoặc các lý do động khác.

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 

Nhưng tôi thấy jobid này chỉ sau khi nhiệm vụ được finihed :(Cảm ơn!

Trả lời

5

Tôi đoán có một cách dễ dàng hơn, nhưng bạn có thể lấy được id của công việc từ args dòng lệnh. IIRC, scrapyd ra mắt . nhện cho nó một jobid trong thông số Chỉ cần khám phá sys.args nơi bạn cần jobid

+1

Tất cả các thiên tài đều dễ dàng;) Cảm ơn, bạn đời! Một số ví dụ: 'nếu (len (sys.argv)> 2): if ('_job' trong sys.argv [3]): self.jobid = sys.argv [3] .rsplit (' = ') ' – fcmax

+0

@Maxim, vui vì nó hoạt động. Xin vui lòng, đừng quên chấp nhận và upvote câu trả lời mà làm việc cho bạn. – warvariuc

+0

Nó requeres 15 điểm danh tiếng. Tôi sẽ trở lại bài viết này sau khi một số tăng trưởng;) Cảm ơn bạn. – fcmax

5

bạn có thể lấy nó từ SCRAPY_JOBbiến môi trường:.

os.environ['SCRAPY_JOB'] 
Các vấn đề liên quan