私は、メールが受信されたことを示す通知をgmailがプッシュするのを待つpythonスクリプトを書いています。次に、内容が解析され、データベースが検索され、データベースのデータが元の送信者に電子メールで戻されます。Python:スクリプトの一部を継続的に実行しています
現在、電子メールが受信されると、スクリプトは電子メールで返信されるまで別の電子メールを処理できません。スクリプトが電子メールを継続的に聞く方法があるのだろうかと思っています。同じ時点で2つの電子メールが受信された場合、この時点では2番目の電子メールは処理されません。
私はマルチスレッドが解決策かもしれないとは思いますが、わかりません。おそらく、以下のコードのprocessEmail.pyセクションのための新しいスレッドを作成しますか?
申し訳ありません私がひどく説明した場合は、これを十分に説明するのに苦労しています。詳細はお気軽にお問い合わせください。
編集:私に投票するのではなく、私が追加する必要のある情報を教えてください。
EDIT 2:ここでのコード例である電子メールがprocessEmail.py
にimport imaplib2
import time
import subprocess
from threading import *
from subprocess import call
import processEmail
class Idler(object):
def __init__(self, conn):
self.thread = Thread(target=self.idle)
self.M = conn
self.event = Event()
def start(self):
self.thread.start()
def stop(self):
self.event.set()
def join(self):
self.thread.join()
def idle(self):
while True:
if self.event.isSet():
return
self.needsync = False
def callback(args):
if not self.event.isSet():
self.needsync = True
self.event.set()
self.M.idle(callback=callback)
self.event.wait()
if self.needsync:
self.event.clear()
self.dosync()
def dosync(self):
print "An email has been received, please wait...\n"
self.execute()
def execute(self):
processEmail.main()
M = imaplib2.IMAP4_SSL("imap.gmail.com")
M.login("email_address","email_pass")
M.select("Folder")
idler = Idler(M)
idler.start()
x = False
while not x: time.sleep(0.1)
あなたの持っている問題を示す[MCVE](http://stackoverflow.com/help/mcve)を入力してください。 –
[あなたに良い質問をする方法]を学ぶべきであるdownvotingを防ぐために(http:// stackoverflow .com/help/how-to-ask)。 –
ありがとう、私は提案された変更を行った。 – dperrie