我beanstalkd
使用标准作为服务运行/etc/default/beanstalkd
。
有时NOT_FOUND
,当我尝试删除作业时,我的代码会抛出错误,因为它由于超出了 TTR 而被释放。我想增加插入管中的所有作业的 TTR。
有没有办法为beanstalkd
作业设置默认 TTR?beanstalkd
我的猜测是我可以在 /etc/default/beanstalkd 中的某个地方更改它,但我在文档中找不到它。
我beanstalkd
使用标准作为服务运行/etc/default/beanstalkd
。
有时NOT_FOUND
,当我尝试删除作业时,我的代码会抛出错误,因为它由于超出了 TTR 而被释放。我想增加插入管中的所有作业的 TTR。
有没有办法为beanstalkd
作业设置默认 TTR?beanstalkd
我的猜测是我可以在 /etc/default/beanstalkd 中的某个地方更改它,但我在文档中找不到它。
在我看来,您没有正确实施协议。你需要处理DEADLINE_SOON
,并且做TOUCH
。
DEADLINE_SOON 是什么意思?
DEADLINE_SOON
是对保留命令的响应,表明您保留了一个截止日期很快的作业(当前安全裕度约为 1 秒)。
如果您经常收到DEADLINE_SOON
保留错误,您可能应该考虑增加您的工作的 TTR,因为它通常表明您没有及时完成它们。也可能是您在完成任务后未能删除它们。
有关更多信息,请参阅邮件列表讨论。
TTR 是如何工作的?
TTR
仅适用于保留时的作业。在这种情况下,计时器(在作业统计中称为“剩余时间”)从作业的TTR
.
“触摸”命令
允许工作人员请求更多时间从事工作。这对于可能需要很长时间的工作很有用,但您仍然希望TTR
从反应迟钝的工人那里获得工作的好处。工作人员可能会定期告诉服务器它还活着并正在处理一项工作(例如,它可能会在 上执行此操作DEADLINE_SOON
)。该命令将保留作业的自动释放推迟到TTR
发出该命令的几秒钟后。
没有办法在 /etc/default/beanstalkd 或其他地方设置全局默认值,但很容易设置一个包装函数/类,所有作业都通过汇集然后插入队列,这将如果没有特别设置,则设置 TTR(PUT 命令的参数)。
在 beanstalkc 中,这将覆盖/替换该put
函数。
def put(self, body, priority=DEFAULT_PRIORITY, delay=0, ttr=DEFAULT_TTR):