如何在 Rails 中动态地在作业中排队作业?
How to enqueue a job within a job dynamically in Rails?
我有一份工作,当工作是 运行 时,在它的最底部,我想 enqueue
相同的工作再次到 运行 之后 1小时,但参数不同。
到目前为止我取得的成就:
class SimpleJob
@queue = :normal
def self.perform(start)
puts "Right now, start = #{start}"
start += 12
time = some_request_external_api
self.set(wait: time).perform_later(start)
end
end
我正在使用 resque gem,并且 运行 通过 QUEUE=* rake resque:work
完成作业。当然,它在开始时会打印 Right now, start = 12
,但之后什么也没有发生。我究竟该如何实现此功能?
听起来您正在寻找设置重复性工作的方法。如果是这样的话,看看这个:
您可以使用调度程序,例如 clockwork
.
,而不是在其内部再次排队作业
或者,如果您要完成的是响应其他服务上的某些事件,也许您可以查看它的文档,看看它是否提供 webhook
功能。
只要他们这边发生任何动作,它们就会向您想要的动作发送 post
请求。
我有一份工作,当工作是 运行 时,在它的最底部,我想 enqueue
相同的工作再次到 运行 之后 1小时,但参数不同。
到目前为止我取得的成就:
class SimpleJob
@queue = :normal
def self.perform(start)
puts "Right now, start = #{start}"
start += 12
time = some_request_external_api
self.set(wait: time).perform_later(start)
end
end
我正在使用 resque gem,并且 运行 通过 QUEUE=* rake resque:work
完成作业。当然,它在开始时会打印 Right now, start = 12
,但之后什么也没有发生。我究竟该如何实现此功能?
听起来您正在寻找设置重复性工作的方法。如果是这样的话,看看这个:
您可以使用调度程序,例如 clockwork
.
或者,如果您要完成的是响应其他服务上的某些事件,也许您可以查看它的文档,看看它是否提供 webhook
功能。
只要他们这边发生任何动作,它们就会向您想要的动作发送 post
请求。