を発生した場合、私は時々、私は再実行するPythonスクリプトエラーが
File "//swigel_local/Shared/Resources/Tools/Twitter/Streaming/StreamingTwitter.py", line 68, in <module>
stream.filter(track=TRACK_TERMS)
File "C:\Users\SwigelUser\Anaconda3\lib\site-packages\tweepy\streaming.py", line 445, in filter
self._start(async)
File "C:\Users\SwigelUser\Anaconda3\lib\site-packages\tweepy\streaming.py", line 361, in _start
self._run()
File "C:\Users\SwigelUser\Anaconda3\lib\site-packages\tweepy\streaming.py", line 294, in _run
raise exception
File "C:\Users\SwigelUser\Anaconda3\lib\site-packages\tweepy\streaming.py", line 263, in _run
self._read_loop(resp)
File "C:\Users\SwigelUser\Anaconda3\lib\site-packages\tweepy\streaming.py", line 313, in _read_loop
line = buf.read_line().strip()
AttributeError: 'NoneType' object has no attribute 'strip'
を取得し、これが私のプログラムを停止します、彼らのストリーミングAPIを使用してTwitterのデータをスクレイピングしています。このエラーが発生したときにプログラムを自動的に再実行できる方法はありますか?
私のコードは次のとおりです。エラーはなぜ起こるか私にはわからない
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
if status.retweeted:
return
text = status.text
created = status.created_at
id_str = status.id_str
retweets = status.retweet_count
blob = TextBlob(text)
sent = blob.sentiment
table = db[settings.TABLE_NAME]
try:
table.insert(dict(
text = text,
created = created,
id_str = id_str,
retweet_count = retweets,
polarity = sent.polarity,
subjectivity = sent.subjectivity,
))
except ProgrammingError as err:
print(err)
def on_error(self, status_code):
if status_code == 420:
#returning False in on_data disconnects the stream
return False
stream.filter(track=TRACK_TERMS)
。しかし、私はそれが私が最近した変化に関係していると思います。
MySQLのmyテーブルにはutf8の照合順序がありますが、警告が表示され、記事が表示され、テーブルがutf8mb4ユニコードに変更されました。 警告が消えてプログラムがうまく動作します。しかし、時々、上記のエラーは、プログラムが実行されているときに発生します。
def _read_loop(self, resp):
charset = resp.headers.get('content-type', default='')
enc_search = re.search('charset=(?P<enc>\S*)', charset)
if enc_search is not None:
encoding = enc_search.group('enc')
else:
encoding = 'utf-8'
buf = ReadBuffer(resp.raw, self.chunk_size, encoding=encoding)
while self.running and not resp.raw.closed:
length = 0
while not resp.raw.closed:
line = buf.read_line().strip()
if not line:
self.listener.keep_alive() # keep-alive new lines are expected
elif line.isdigit():
length = int(line)
break
else:
raise TweepError('Expecting length, unexpected value found')
を特定し、バグを修正するか、単に例外をキャッチし、あなたは、単にそのようなエラーを無視してはならない – Prateek
それを無視応じてそれらを扱います。それはあなたのコードのエラーの良い兆候であり、未チェックのままにしておくと、そのコードの実行の大部分で発生する可能性があります。 'None'値を得ている理由と' None'(またはfalseyness)のチェックを行い、そのコードを実行しない、または潜在的な論理エラーを修正する理由を特定する方が良いでしょう。 –