यह IncompleteRead
त्रुटि आम तौर पर तब होती है जब आपके आने वाले ट्वीट का उपभोग पीछे पड़ने लगता है
, जो आपके मामले में ट्रैक करने के लिए शर्तों की लंबी सूची को देखते हुए समझ में आता है। ऐसा लगता है कि अधिकांश लोग सामान्य दृष्टिकोण (स्वयं शामिल) अपना रहे हैं, बस इस त्रुटि को दबाने और अपना संग्रह जारी रखने के लिए है (ऊपर लिंक देखें)।
मुझे पूरी तरह याद नहीं है कि क्या IncompleteRead
आपका कनेक्शन बंद कर देगा (मुझे लगता है कि यह हो सकता है, क्योंकि मेरा व्यक्तिगत समाधान मेरी स्ट्रीम को फिर से जोड़ता है), लेकिन आप निम्न की तरह कुछ पर विचार कर सकते हैं (मैं बस इसे विंग करने जा रहा हूं, शायद इसे आपकी स्थिति के लिए फिर से काम करने की आवश्यकता है ):
# from httplib import IncompleteRead # Python 2
from http.client import IncompleteRead # Python 3
...
while True:
try:
# Connect/reconnect the stream
stream = Stream(auth, listener)
# DON'T run this approach async or you'll just create a ton of streams!
stream.filter(terms)
except IncompleteRead:
# Oh well, reconnect and keep trucking
continue
except KeyboardInterrupt:
# Or however you want to exit this loop
stream.disconnect()
break
...
फिर से, मैं इसे वहीं पंख लगा रहा हूं, लेकिन कहानी का नैतिक यह है कि यहां सामान्य दृष्टिकोण त्रुटि को दबाने और जारी रखने के लिए है।
संपादित करें (10/11/2016): बहुत बड़ी मात्रा में ट्वीट करने वाले किसी भी व्यक्ति के लिए बस एक उपयोगी बोली - इस मामले को बिना संभालने का एक तरीका कनेक्शन समय या ट्वीट्स खोना आपके आने वाले ट्वीट्स को एक कतार समाधान (RabbitMQ, Kafka, आदि) में छोड़ना होगा, जिसे से पढ़ने वाले एप्लिकेशन द्वारा अंतर्ग्रहण/संसाधित किया जाएगा। वह कतार।
यह अड़चन को ट्विटर एपीआई से आपकी कतार में ले जाता है, जिससे आपको डेटा का उपभोग करने के लिए प्रतीक्षा करने में कोई समस्या नहीं होनी चाहिए।
यह एक "उत्पादन" सॉफ़्टवेयर समाधान है, इसलिए यदि आप ट्वीट खोने या फिर से कनेक्ट होने की परवाह नहीं करते हैं, तो उपरोक्त समाधान अभी भी पूरी तरह से मान्य है।