2011-04-01 5 views
1

Heroku는 백그라운드 작업자와 cron (매일, 매시간)을 지원하지만 코드를 1 초에 한 번 실행하는 방법을 찾고 있습니다.어떻게 Heroku에서 코드를 초당 한 번 실행합니까?

내가 Heroku에서 게임 백엔드를 가지고 있고 얼마 후 플레이어 동작을 시간 종료하려고한다고 가정 해 봅시다.

어떻게 해결할 수 있습니까?

+0

은 아마 한 번이 작업 두 번째를 실행하지만 아무것도하지 않는 아마존 EC2 인스턴스를 실행 고려해야합니다. US East는 지리적으로 Heroku 인스턴스에 국한되며, 다른 비 Heroku 지원 서비스도 실행할 수 있습니다. –

답변

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

[clockwork] (https://github.com/tomykaira/clockwork)와 같은 라이브러리는이 시나리오에서 유용하지만 별도의 dyno를 실행해야합니다. –

0

일부 Javascript 폴링은 매초마다 일부 코드를 실행하는 Heroku 작업자의 대안 일 수 있습니다. 주어진 시간 후에 AJAX 호출을 수행하는 것.

매초마다 일부 코드를 실행하는 Heroku 작업자를 실행하는 것이 비용면에서 효율적이거나 효율적이지는 않습니다. 아마도 내 머리 위로 떨어져

:

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

timer = window.setInterval(codeToRun,1000); 
관련 문제