2012-03-11 15 views
8

फ्रेमवर्क स्केपर - 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

सभी प्रतिभा आसान है;) धन्यवाद, दोस्त! कुछ उदाहरण: 'अगर (लेन (sys.argv)> 2): अगर (sys.argv में '_job' [3]): self.jobid = sys.argv [3] .rsplit (' = ') ' – fcmax

+0

@ मैक्सिम, खुशी है कि यह काम किया। कृपया, आपके लिए काम किए गए उत्तरों को स्वीकार और अपवर्तित करना न भूलें। – warvariuc

+0

यह प्रतिष्ठा के 15 अंक की आवश्यकता है। कुछ विकास के बाद मैं इस पोस्ट पर वापस आऊंगा;) धन्यवाद। – fcmax

5

आप SCRAPY_JOBवातावरण चर से प्राप्त कर सकते हैं:।

os.environ['SCRAPY_JOB'] 
संबंधित मुद्दे