我有一个程序可以从数据库中提取“工作”,然后将其分派给工作人员。
我有一个线程专门用于循环做一些工作。它所做的工作来自数据库,并且获取消息的调用被阻塞:
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
标志,当主线程退出时将其杀死,但我想知道是否有更好的机制或设计方式?