我正在努力完成一项基本上命中第三方API并获取数据以将其插入数据库的工作。有时这些数据需要花费一段时间才能插入。
我正在使用beanstalkd作为我的队列驱动程序,据我所知,如果作业需要超过60秒(这是默认的TTR),它将被推回到就绪队列,等待其他工作人员接收,即使它仍然由一个首先捡起它的工人处理。因此,2名工作人员选择了相同的工作,有时我会得到相同数据库条目的双重甚至三元组。
所以我做了最符合逻辑的事情,就是将TTR提高到6000,接近2小时,我的工作可能花费很长时间。工作需要3-5分钟才能完成。
但即使我将其设定为如此高的价值,不知何故,多个工作仍在继续工作。我错过了什么?似乎存在某种我无法解决的竞争状况。任何人的想法?