2011-07-19 134 views
1

我想創建一個bot,它使API每分鐘對一些API url請求發出請求。然後,如果數據條目在API Feed中與他的名稱相比發生了變化,則需要ping特定用戶。我想要在Heroku上免費獲得解決方案。這可以實現嗎?heroku上的API輪詢機器人

回答

2

是的,heroku支持瘦Web服務器,這是一個EventMachine啓用,所以一個簡單的方法是編寫一個快速的sinatra應用程序,並使用EM.add_periodic_timer爲您的API調用。當你將這個sinatra應用程序部署到heroku時,它將默認使用thin,所以不需要額外的配置。假設你的config.ru是正確的,你可以通過thin start -p 4567進行測試。這是一個非常標準的,假設你的應用程序是在app.rb:

require 'bundler/setup' 
Bundler.require :default 
require File.expand_path('app', File.dirname(__FILE__)) 

run Sinatra::Application 
+0

我應該注意的是,如果你想在西納特拉的應用程序仍然響應,檢查出EM-HTTP請求撥打電話。如果你不喜歡回調,請查看em-synchrony和sinatra-synchrony –

2

我目前檢查一些網站在heroku上的免費狀態。祕密?魯弗斯 - Scheduer。

安裝寶石

gem install rufus-scheduler 

確保您在成束或不過要包括它的寶石。

然後您需要創建一個名爲task_scheduler.rb的文件並將其粘貼在initializers目錄中。

require 'rufus/scheduler' 
scheduler = Rufus::Scheduler.start_new 

scheduler.every '1m' do 
    url = "http://codeglot.com" 
    response = Net::HTTP.get_response(URI.parse(url)) 
    #do stuff with response.body 
end 

如果您有任何問題,你可以看到這個博客帖子:

http://intridea.com/2009/2/13/dead-simple-task-scheduling-in-rails?blog=company

+0

我不想製作一個rails應用程序。 Sinatra很好,但沒有Rails。 Rails會過度殺傷。 – rightskewed

+0

它是如何矯枉過正。我可以在5分鐘內從字面上理解這一點。 – s84

+0

我個人比較喜歡Sinatra而不是RAils。 – rightskewed