データベースから「作業」を取得してワーカーにディスパッチするプログラムがあります。
ループ内でいくつかの作業を行う専用のスレッドがあります。それが行う作業はデータベースから来ており、メッセージを取得するための呼び出しはブロックされています:
class MessageThread(Thread):
def __init__(self, db, worker_inbox, *args, **kwargs):
super(MessageThread, self).__init__(*args, **kwargs)
self.db = db
self.worker_inbox = worker_inbox # this is a stdlib Queue.Queue
def run(self):
while True:
message = self.db.get()
self.worker_inbox.put(message)
データベースに「フラグ」を立てる必要なく、このスレッドを停止する良い方法はありますか? 現在daemon
、メインスレッドが終了するとフラグを設定していますが、これを設計するためのより良いメカニズムまたは方法があるかどうか疑問に思いましたか?