TS延迟增量 - 检查完成的工作

时间:2012-10-01 20:41:18

标签: delayed-job thinking-sphinx

有没有办法检查TS延迟增量作业是否已完成?我有一个场景,我需要在after_save回调中运行新搜索,当然我希望看到搜索结果中反映的delta索引更改。

以下是我的示例的一些细节:

我有一个名为Feature的模型,它有许多注释(注释模型)。索引如下所示:

define_index do
  indexes annotations.value, :as => :annotations

  # other indexes
  set_property :delta => :delayed
end

当注释的“值”发生变化时,我会更新注释模型回调中相关要素的delta属性。将delta属性设置为true会使delayed_job任务旋转以更新delta索引。在单独的回调中,我想对更新的增量索引执行新的搜索,但我注意到搜索从不反映索引的当前状态。这无疑是因为delta工作尚未完成。

处理这些时间问题的最佳策略是什么?

1 个答案:

答案 0 :(得分:0)

我只想到一个。查询delayed_jobs表

ActiveRecord::Base.connection.execute("select count(1) from delayed_jobs where handler like '%%'")

如果工作成功,那么该条目肯定已经消失。这是我能想到的唯一方法。或者单独禁用此模型的延迟增量,如果它没什么大不了的。