Heroku支持後臺工作人員和cron(每天,每小時),但我正在尋找一種方法來每秒運行一次代碼。如何在Heroku上每秒運行一次代碼?
假設我在Heroku上有一個遊戲後端,並且想要在一段時間後暫停某些玩家動作。
你會如何解決這個問題?
Heroku支持後臺工作人員和cron(每天,每小時),但我正在尋找一種方法來每秒運行一次代碼。如何在Heroku上每秒運行一次代碼?
假設我在Heroku上有一個遊戲後端,並且想要在一段時間後暫停某些玩家動作。
你會如何解決這個問題?
你應該嘗試魯弗斯調度:
安裝寶石
gem install rufus-scheduler
確保您在成束或不過寶石你正在包括它。
然後您需要創建一個名爲task_scheduler.rb
的文件並將其粘貼在initializers
目錄中。
require 'rufus/scheduler'
scheduler = Rufus::Scheduler.start_new
scheduler.every '1s' do
puts "Test!"
#do something here
end
如果您有任何問題,你可以看到這個博客帖子:
http://intridea.com/2009/2/13/dead-simple-task-scheduling-in-rails?blog=company
像[發條](https://github.com/tomykaira/clockwork)這樣的庫在這種情況下也很有用,不過它需要單獨的測試儀來運行。 – 2012-04-19 20:33:31
一些Javascript輪詢可能是Heroku每秒運行一些代碼的工作者的替代方案。在給定的時間段內執行AJAX調用的東西。
運行一名Heroku worker每秒運行一些代碼似乎並不是非常符合成本效益或效率。
關閉我的頭頂,也許是:
var codeToRun = function(){
$.ajax({
url: '/test',
success: function(){
alert('Code was run.');
}
)};
}
timer = window.setInterval(codeToRun,1000);
也許你應該考慮運行在Amazon EC2實例,做什麼,但運行此任務一次第二。美國東部地區的Heroku實例在地理位置上,您也可以運行其他非Heroku支持的服務。 – 2011-04-01 08:39:10