在Beanstalkd中,当作业到达TTR时,它将终止处理作业的工作者并将作业释放回池中。在我们的系统中,这应该是一个超级罕见的事件,在这种情况下,我只想埋葬这份工作。
如何做到这一点?
(如果重要,我们使用的是PHP + Pheanstalk)
答案 0 :(得分:2)
听起来你没有正确实施协议。您需要处理DEADLINE_SOON
,并执行TOUCH
。
DEADLINE_SOON是什么意思?
DEADLINE_SOON
是对保留命令的回应,表示您预约了一个截止日期很快的工作(当前安全边际约为1秒)。
如果您经常收到DEADLINE_SOON
个保留错误,您应该考虑增加工作中的TTR,因为它通常表示您没有及时完成。您可能还没有在完成任务后删除任务。
有关详细信息,请参阅mailing list discussion。
TTR如何运作?
TTR
仅适用于作业保留的那一刻。在那个事件中,一个计时器(在工作统计中称为“剩余时间”)从作业的TTR
开始倒计时。
“触摸”命令
允许工作人员请求更多时间处理工作。
这对于可能需要很长时间但仍然需要的作业非常有用
TTR
将工作从无反应的工人中拉出来的好处。一位工人
可以定期告诉服务器它仍处于活动状态并处理作业
(例如,它可以在DEADLINE_SOON
上执行此操作)。该命令推迟了auto
释放保留作业,直到发出命令后TTR
秒为止。