imaplib のフェッチ関数が 3 回試行ごとに失敗するという奇妙な問題が発生しています。用語のリストから検索用語を選択し、その検索用語を使用して、その用語を含む電子メールのリストを Gmail メールボックスから取得しています。次に、ランダムなメッセージを選択し、検索語を含む行を引き出します。スクリプトを 3 回実行するたびに、次のエラーが表示されます。
Traceback (most recent call last):
File "/Users/Spike/python/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1518, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/Spike/python/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1506, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/Spike/python/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1504, in wsgi_app
response = self.full_dispatch_request()
File "/Users/Spike/python/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1265, in full_dispatch_request
response = self.make_response(rv)
File "/Users/Spike/python/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1332, in make_response
raise ValueError('View function did not return a response')
ValueError: View function did not return a response
私はいくつかのテストを行い、電子メールを印刷しましたが、確かに、検索用語はそこにありません. これは、スクリプトが 3 回実行されるたびに、実際には含まれていない検索用語が含まれているため、電子メールをプルすることを意味します。これは私には不可解です。一体何が起こっているのか誰か知っていますか?
関連コード:
clean2 = [feeling.strip() for feeling in open('feeling2.txt').readlines()] #open the txt file full of feelings from the wefeelfine api
random_feeling = random.choice(clean2)
print "this is a random feeling", random_feeling
status, numbers_list = s.search(None, '(BODY "%s")' % random_feeling) #searching the mailbox, finding ids with that search term, saving to list
numbers.append(numbers_list) #append the numbers list
smsgids = str(numbers) #turning the numbers list into a string
ids_list = smsgids.strip().split(' ') #splitting it into a list
msg_random = random.choice(ids_list) #pulling a random id from the id list
typ, msg_data = s.fetch(msg_random, '(BODY[TEXT])') #pulling the message and saving it as a variable
soup = BeautifulSoup(repr(msg_data), "html5lib") #turning it into a beautifulsoup object, but as a string first
text = soup.find_all("div") #finding all of the html div tags and saving it as a variable
as_text = [item.text for item in text]
chat_text = '\n'.join(as_text)
print chat_text
for line in as_text:
print random_feeling
print line
if random_feeling in line:
return line