2011-07-19 135 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