【问题标题】:Get the last run_at for a DelayedJob in Rails获取 Rails 中 DelayedJob 的最后一个 run_at
【发布时间】:2020-06-01 22:07:46
【问题描述】:

我正在使用 Rails 延迟作业将作业排入队列以在特定时间运行。是否可以知道上次运行特定延迟作业的时间戳?

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    您需要通过某个标识符来查询作业。您的工作被保存到延迟工作表中,您可以在名为“处理程序”的文本字段中找到它们。 来自delayed_job 文档:

     table.text :handler # YAML-encoded string of the object
    

    那会起作用的 因此,要查询它们,您可以这样做

    Delayed::Job.where("handler LIKE '%name: #{name}%'")
    

    我不知道你在那里有什么独特的名字,“名字”是虚构的,可能不起作用。最简单的想法是查看数据库。可能作业的类名已保存,您可以通过它进行查询。

    【讨论】:

      【解决方案2】:

      如果数据库中已经没有时间戳,您可以使用回调来完成作业:https://guides.rubyonrails.org/active_job_basics.html#callbacks 例如,您可以创建一个名为 JobLogs 的新模型并将数据保存在那里。

      从文档中可以看出,您可以在工作中使用回调 after_perform :save_time,然后像这样定义方法:

      def save_time
        JobLog.create(last_run: Time.now.utc)
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 1970-01-01
        • 2016-03-18
        • 2013-10-13
        • 1970-01-01
        相关资源
        最近更新 更多