0
我目前在Ruby中使用我的应用程序启用队列。我用sidekiq并有定义如下工人类:Sidekiq和红宝石中的排队
class Worker
include Sidekiq::Worker
def perform(params)
sleep 10
@@logger.info("--------------------------")
@@logger.info("Request received")
@@logger.info("--------------------------")
end
end
我从我的主入口点调用它称为“api.rb”
post '/receive/?' do
@@logger.debug("/retrieve endpoint received")
Worker.perform_async @params
end
这个工作的罚款,每次的睡眠完成后,下一个排队的任务开始。
在我的情况下,我需要排队或开始下一个排队的项目,只有当我决定。它将由外部事件触发。在我的 'api.rb'
,我已经加入:
post '/response/?' do
next_task
end
代码工作的方式是 '/接收' 可排队10个请求。第一个请求会触发一个特定的动作(发送一个post命令给服务器)。
我希望远程服务器通过“/ response”向我发送请求,告诉我该操作已完成。当收到此响应时,我使用'next_task'api删除正在运行并且现在已完成的前一个任务,并移至下一个排队的任务。
任何想法,如何创建一个自定义触发器来排队和开始新的工作。是否有信号让我避免sidekiq框架去队列,直到我发送一个特定的信号。
的Merci
我想要做的是控制下一份工作的开始。默认情况下,当前一个完成时,队列会自动启动一个新的作业。就我而言,我只需要求职时就开始下一个工作,因为工作是在远程服务器上完成的,而且我无法控制远程任务何时结束。 – Seb
是的,这就是我写的。在我的示例中,使用sidekiq队列作为'唤醒事件',每10秒钟一次,并将真实队列存储在数据库中 - 模型“Job”中。 –