【发布时间】:2020-06-01 22:07:46
【问题描述】:
我正在使用 Rails 延迟作业将作业排入队列以在特定时间运行。是否可以知道上次运行特定延迟作业的时间戳?
【问题讨论】:
我正在使用 Rails 延迟作业将作业排入队列以在特定时间运行。是否可以知道上次运行特定延迟作业的时间戳?
【问题讨论】:
您需要通过某个标识符来查询作业。您的工作被保存到延迟工作表中,您可以在名为“处理程序”的文本字段中找到它们。 来自delayed_job 文档:
table.text :handler # YAML-encoded string of the object
那会起作用的 因此,要查询它们,您可以这样做
Delayed::Job.where("handler LIKE '%name: #{name}%'")
我不知道你在那里有什么独特的名字,“名字”是虚构的,可能不起作用。最简单的想法是查看数据库。可能作业的类名已保存,您可以通过它进行查询。
【讨论】:
如果数据库中已经没有时间戳,您可以使用回调来完成作业: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
【讨论】: