我使用标准的beanstalkd作为服务运行/etc/default/beanstalkd。
有时,当我试图删除作业时,我的代码会抛出一个NOT_FOUND错误,因为它是由于超过TTR而释放的。我想增加TTR的所有工作,被插入到管。
是否有一种为beanstalkd 作业设置默认TTR的方法?--我的猜测是,我可以在/etc/ default /beanstalkd中更改它,但在beanstalkd文档中找不到。
发布于 2014-09-11 16:29:45
没有一种方法可以在/etc/ default /beanstalkd或其他地方设置全局默认值,但是设置包装器函数/类非常容易,所有作业都可以通过这个函数/类插入队列,如果没有专门设置TTR ( PUT命令的参数)。
在beanstalkc中,这将覆盖/替换put函数。
def put(self, body, priority=DEFAULT_PRIORITY, delay=0, ttr=DEFAULT_TTR):发布于 2014-09-12 13:24:10
在我看来,你没有正确地执行协议。您需要处理DEADLINE_SOON,并执行TOUCH。
DEADLINE_SOON是什么意思?
DEADLINE_SOON是对备用命令的响应,指示您保留了一个任务,该任务的截止日期很短(当前的安全裕度约为1秒)。
如果您经常收到保留的DEADLINE_SOON错误,您可能应该考虑增加工作中的TTR,因为它通常表明您没有及时完成这些错误。这也可能是因为当您完成任务时,无法删除它们。
有关更多信息,请参见邮件列表讨论。
TTR是如何工作的?
TTR只在职务被保留时才适用于它。在这种情况下,一个定时器(作业统计中称为“时间-左”)开始从作业的TTR中计数。
“触摸”命令
允许员工请求更多时间从事工作。这对于可能需要很长时间的工作是有用的,但您仍然希望TTR将工作从没有响应能力的员工中分离出来。工作人员可能会周期性地告诉服务器,它仍然在运行并处理一个作业(例如,它可以在DEADLINE_SOON上这样做)。该命令将保留作业的自动释放推迟到发出命令后的TTR秒。
https://stackoverflow.com/questions/25791633
复制相似问题