我有一个网络爬虫,其中基本布局是一个管理器,它运行打开连接、获取内容并将其插入数据库的代理。
这些代理中的每一个都在循环中的单独线程中运行,直到用户发送停止信号。这些代理从管理代理获取任务。
问题是如果代理中发生异常,它不能被抛出到接口(除非我使用一些观察者来表示发生了异常)。
我认为这种设计是错误的,正确的是创建一个有限的任务并将它们放入执行程序(为每个 URL 创建一个任务以打开连接、获取内容或插入数据库)。
我是对的,我目前的设计是错误的,必须改变布局?在不同的代理完成工作的不同部分的情况下,多线程使用的正确布局是什么?