2011-04-01 92 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);