1

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

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

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

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

  # other indexes
  set_property :delta => :delayed
end

当注释的“值”发生变化时,我delta会在注释模型回调中更新关联特征的属性。将 delta 属性设置为 true 会启动延迟作业任务以更新 delta 索引。在单独的回调中,我想对更新的 delta 索引执行新的搜索,但我注意到搜索从未反映索引的当前状态。毫无疑问,因为增量作业尚未完成。

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

4

1 回答 1

0

我只能想到一个。查询delayed_jobs 表

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

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

于 2012-11-01T19:44:19.760 回答