工作线程中未捕获的异常

时间:2019-07-03 10:47:58

标签: python multithreading python-multiprocessing

这是我在Python文档中找到的摘录:

def worker():
    while True:
        item = q.get()
        do_work(item)
        q.task_done()

q = Queue()
for i in range(num_worker_threads):
     t = Thread(target=worker)
     t.daemon = True
     t.start()

for item in source():
    q.put(item)

q.join()       # block until all tasks are done

Python Docs: Queue

我认为上述模式缺少一些重要功能。

例如:如果在工作线程中发生未捕获的异常,则该工作线程将无法恢复。迟早所有工人都会崩溃,因为发生了未捕获的异常。

我想在上面的代码段中使用它是不明智的。

在我的上下文中,我需要一个在systemd(linux)下运行的简单守护程序。

不应使用Rabbit / MQ之类的消息/队列服务器。

如何获得可靠的多线程解决方案?

不幸的是,我们需要支持Python2.7

0 个答案:

没有答案