Ruby on rails 用于查询web资源的永久守护程序

Ruby on rails 用于查询web资源的永久守护程序,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,daemon,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,Daemon,我有一个rails 3应用程序,在internet上查找守护程序,但没有找到适合我的 我想要一个守护进程,它从web资源中永久获取数据并将其保存到数据库中 比如: 我只见过类似cron的作业,但它们只在特定时间后运行。。。我希望它永久存在,这取决于结束查询所需的时间 你明白我的意思吗?你可以在一个有perform方法的类中编写代码,使用队列系统,在应用程序启动时使用Resque.enqueueUpdater将作业排队 显然,在申请停止之前,工作不会结束,我个人不喜欢这样,但如果这是要求的话 因此

我有一个rails 3应用程序,在internet上查找守护程序,但没有找到适合我的

我想要一个守护进程,它从web资源中永久获取数据并将其保存到数据库中

比如:

我只见过类似cron的作业,但它们只在特定时间后运行。。。我希望它永久存在,这取决于结束查询所需的时间


你明白我的意思吗?

你可以在一个有perform方法的类中编写代码,使用队列系统,在应用程序启动时使用Resque.enqueueUpdater将作业排队

显然,在申请停止之前,工作不会结束,我个人不喜欢这样,但如果这是要求的话

因此,如果需要执行其他任务,则应配置多个工作进程和多个队列(可选)

如果您可以编辑您的需求并找到更新机制的触发器,那么相同的方法仍然有效,您只需删除while true循环

所需的示例类:

Class Updater
  @queue = :endless_queue
  def self.perform
    while true
      Model.update_attribute(:course, http::get.new("asdasd").response)
    end
  end
end

您可以在具有perform方法的类中编写代码,使用队列系统,并在应用程序启动时使用Resque.enqueueUpdater将作业排队

显然,在申请停止之前,工作不会结束,我个人不喜欢这样,但如果这是要求的话

因此,如果需要执行其他任务,则应配置多个工作进程和多个队列(可选)

如果您可以编辑您的需求并找到更新机制的触发器,那么相同的方法仍然有效,您只需删除while true循环

所需的示例类:

Class Updater
  @queue = :endless_queue
  def self.perform
    while true
      Model.update_attribute(:course, http::get.new("asdasd").response)
    end
  end
end

最后,我找到了一个很酷的解决方案:

我使用上帝宝石->

使用bash脚本启动/停止包含无限循环的简单rake任务


现在它工作正常了,我甚至在god运行的情况下进行了一些监控,以确保rake任务正常运行。

最后,我找到了一个很酷的解决方案:

我使用上帝宝石->

使用bash脚本启动/停止包含无限循环的简单rake任务


现在它工作得很好,我甚至在god运行的情况下进行了一些监视,以确保rake任务正常运行。

我编写的gem light守护程序在您的情况下应该工作得很好


我编写的gem-light守护进程在您的情况下应该可以很好地工作


是的,这也是我的第一个解决方案,但这似乎有点过于复杂,因为我只需要一个作业,没有队列。。。但是谢谢你的回答!Resque有点复杂,因为它依赖于Redis,所以您将有两个守护进程与应用程序一起运行,但还有其他解决方案只需要一个守护进程,并且您必须至少有一个守护进程。其中一个是,这是在Heroku上用于后台处理的同一块宝石,看一看,是的,我已经看过了,但这是同样的问题。。。它适用于许多带有队列的作业。。。我仍然只需要一份固定的工作。。但是谢谢你的回答!是的,这也是我的第一个解决方案,但这似乎有点过于复杂,因为我只需要一个作业,没有队列。。。但是谢谢你的回答!Resque有点复杂,因为它依赖于Redis,所以您将有两个守护进程与应用程序一起运行,但还有其他解决方案只需要一个守护进程,并且您必须至少有一个守护进程。其中一个是,这是在Heroku上用于后台处理的同一块宝石,看一看,是的,我已经看过了,但这是同样的问题。。。它适用于许多带有队列的作业。。。我仍然只需要一份固定的工作。。但是谢谢你的回答!