2012-07-30 13 views
5

मेरे पास मेरी सेवा के लिए खोलने के लिए आवश्यक URL की एक लंबी सूची है। जब भी मैं इस पूरी सूची को खोलने का प्रयास करता हूं, तो जब मैं प्रोग्राम शुरू करता हूं तो मुझे कई त्रुटियां मिलती हैं: [Errno 24] Too many open files। मैं urllib2 और gevent का उपयोग कर रहा हूँ।पायथन urllib2 त्रुटियां

क्या किसी के पास कोई समाधान है?

धन्यवाद।

+4

कुछ कोड दिखाने की आवश्यकता है। sscce.org –

+2

और पूर्ण ट्रेसबैक –

उत्तर

2

एक समय में केवल कुछ निश्चित यूआरएल खोलने के लिए Gevent.pool का उपयोग करें, फिर उन ग्रीनलेट का पुन: उपयोग करें जब आपने यूआरएल खोला हो।

+0

धन्यवाद, यह समस्या ठीक हो गई है! –

0

जैसा कि हम अभी भी नहीं जानते कि आप वास्तव में क्या करते हैं, मैं केवल अनुमान लगा सकता हूं: आप एक ही समय में कई यूआरएल खोल रहे हैं, और केवल तभी आप उन्हें पढ़ने की कोशिश करते हैं। इसके बजाए, आपको उन्हें खोलना/पढ़ना चाहिए और फिर अगली तक अग्रिम करना चाहिए।

वैकल्पिक रूप से, आप एक समवर्ती सक्षम यूआरएल लोडर बना सकते हैं: कुछ यूआरएल खोलें और उन्हें समवर्ती रूप से पढ़ने का प्रयास करें। एक बंद करने के बाद, आप अगला खोलना शुरू कर सकते हैं। यदि आप इसे एक बार में 5 या 10 तक सीमित करते हैं, तो आपको अब कोई समस्या नहीं होनी चाहिए।