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」中。 –