2012-01-11 18 views
26

द्वारा एक मौजूदा कनेक्शन जबरन बंद कर दिया गया था, मैं ट्विटर-पीई का उपयोग करके ट्विटर स्थान को क्रॉल करने के लिए अजगर लिख रहा हूं। मैंने क्रॉलर को api.twitter.com पर प्रत्येक अनुरोध के बीच थोड़ी देर (2 सेकंड) के लिए सोने के लिए सेट किया है। हालांकि, चलने के कुछ समय बाद (लगभग 1), जब ट्विटर की दर सीमा अभी तक पार नहीं हुई, तो मुझे यह त्रुटि मिली।पायथन: [एरर्नो 10054] रिमोट होस्ट

[Errno 10054] An existing connection was forcibly closed by the remote host. 

इस समस्या के संभावित कारण क्या हैं और इसे कैसे हल करें?

मैंने खोज की है और पाया है कि ट्विटर सर्वर स्वयं कई अनुरोधों के कारण कनेक्शन बंद करने के लिए मजबूर हो सकता है।

अग्रिम में बहुत बहुत धन्यवाद।

उत्तर

8

यह कनेक्शन के दोनों पक्षों के कारण हो सकता है कि इस संबंध में असहमत हो कि क्या कनेक्शन समय-समय पर रहता है या नहीं। (आपका कोड कनेक्शन को पुन: उपयोग करने का प्रयास करता है जैसे कि सर्वर इसे बंद कर रहा है क्योंकि यह बहुत लंबे समय तक निष्क्रिय है।) आपको मूल रूप से केवल नए कनेक्शन पर ऑपरेशन को फिर से प्रयास करना चाहिए। (मैं हैरान हूँ अपने पुस्तकालय स्वचालित रूप से ऐसा नहीं होता।)

+1

मुझे एक ही समस्या है। बोतल पुस्तकालय का उपयोग करना, और httplib के साथ भेजना। मैं वास्तव में पुनः प्रयास नहीं भेज सकता, क्योंकि मूल कॉल पहले ही सर्वर पर निष्पादित किया गया था। जब मैं प्रतिक्रिया डेटा पढ़ने की कोशिश की तो कनेक्शन बंद कर दिया गया था। यह हर समय नहीं होता है, आमतौर पर जब मैं केवल अनुरोध के साथ सर्वर स्पैम करता हूं। क्या आप संचार को स्थिर बनाने के लिए किसी भी पैरामीटर को ट्विक कर सकते हैं? –

+1

@RomanHwang आपको या तो इसे दोहराए बिना पिछले ऑपरेशन को जांचने के लिए एक तरीका चाहिए या आपको अपने परिचालन [idempotent] (http://stackoverflow.com/questions/1077412/what-is-an-idempotent-operation) की आवश्यकता है । –

+1

संकेत के लिए धन्यवाद। मुझे यह भी पता चला कि मुझे इतनी बार त्रुटि क्यों मिलती है। यह बोतल के डिफ़ॉल्ट विकास सर्वर के कार्यान्वयन के कारण है। यह एकल-थ्रेडेड है और एक समय में बहुत से अनुरोधों को संभालने के लिए उपयुक्त नहीं है। –

4

कई कारण इस तरह के

  • के रूप में सर्वर और ग्राहक के बीच नेटवर्क लिंक अस्थायी रूप से हो सकता है नीचे जा रहा है।
  • सिस्टम संसाधनों से बाहर चल रहा है।
  • विकृत डेटा भेजना।

विस्तार से समस्या की जांच करने के लिए, आप वायरशर्क का उपयोग कर सकते हैं।

या आप फिर से अनुरोध कर सकते हैं या पुनः कनेक्ट कर सकते हैं।

+0

हां, बस अनुरोध फिर से चल रहा है मेरे लिए काम किया = / – Andrew

0

मेरे लिए एसएपी हाना डेटाबेस से कनेक्ट करने का प्रयास करते समय यह समस्या उत्पन्न हुई। जब मैं यह त्रुटि आई,

OperationalError: Lost connection to HANA server (ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

मैं (नीचे वर्णित) कनेक्शन के लिए कोड है, जो कि त्रुटि बनाई भागने की कोशिश की, फिर से है और यह काम किया।

 

    import pyhdb 
    connection = pyhdb.connect(host="example.com",port=30015,user="user",password="secret") 
    cursor = connection.cursor() 
    cursor.execute("SELECT 'Hello Python World' FROM DUMMY") 
    cursor.fetchone() 
    connection.close() 

ऐसा इसलिए था क्योंकि सर्वर कनेक्ट करने से इंकार कर दिया था। आपको थोड़ी देर इंतजार करने और फिर से प्रयास करने की आवश्यकता हो सकती है। लॉग ऑफ करके और फिर लॉग इन करके हाना स्टूडियो को बंद करने का प्रयास करें। कई बार कोड चलाना जारी रखें।

संबंधित मुद्दे