2011-04-01 93 views
1

Heroku支持後臺工作人員和cron(每天,每小時),但我正在尋找一種方法來每秒運行一次代碼。如何在Heroku上每秒運行一次代碼?

假設我在Heroku上有一個遊戲後端,並且想要在一段時間後暫停某些玩家動作。

你會如何解決這個問題?

+0

也許你應該考慮運行在Amazon EC2實例,做什麼,但運行此任務一次第二。美國東部地區的Heroku實例在地理位置上,您也可以運行其他非Heroku支持的服務。 – 2011-04-01 08:39:10

回答

1

你應該嘗試魯弗斯調度:

安裝寶石

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

+0

像[發條](https://github.com/tomykaira/clockwork)這樣的庫在這種情況下也很有用,不過它需要單獨的測試儀來運行。 – 2012-04-19 20:33:31

0

一些Javascript輪詢可能是Heroku每秒運行一些代碼的工作者的替代方案。在給定的時間段內執行AJAX調用的東西。

運行一名Heroku worker每秒運行一些代碼似乎並不是非常符合成本效益或效率。

關閉我的頭頂,也許是:

var codeToRun = function(){ 
    $.ajax({ 
      url: '/test', 
      success: function(){ 
      alert('Code was run.'); 
      } 
    )}; 
} 

timer = window.setInterval(codeToRun,1000);