我想创建一个机器人,每分钟向某个API网址发出API请求。然后,如果数据条目在API提要中与其名称相比发生了变化,则需要对特定用户执行ping操作。我想在Heroku上寻找免费的解决方案。这可以实现吗?
答案 0 :(得分: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
答案 1 :(得分:2)
我目前在heroku上免费查看某些网站的状态。秘密?鲁弗斯-Scheduer。
安装宝石
gem install rufus-scheduler
确保将gem包含在bundler中,或者包含它。
然后你需要创建一个名为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