【问题标题】:can i start a thread when start the rails server我可以在启动rails服务器时启动一个线程吗
【发布时间】:2014-09-28 13:08:16
【问题描述】:

我是 Rails 新手,我需要在 Rails 中运行一项任务,这意味着有一个功能,需要在 5 分钟的时间间隔内调用?因为我正在使用原型,并且它在 heroku 上运行,所以我无法使用 heroku 运行任何付费插件,我也读到了,heroku 有一个调度程序,它是免费的,但只能在 10 分钟的时间间隔内工作。所以我在想,为这个原型项目运行一个线程,即

这里写一个线程,需要在睡眠 5 分钟后调用一个函数?启动rails服务器时如何运行该线程?我可以通过 proc 文件启动该线程和服务器吗?这是正确的做法吗?

def test

end
t = Thread.new do
  while true do
  sleep 60
    test()       
  end
end
t.join

【问题讨论】:

    标签: ruby-on-rails ruby multithreading ruby-on-rails-3 ruby-on-rails-4


    【解决方案1】:

    在我看来,您应该使用一些 cronjob gem,例如 whenever

    此 gem 将在 config/schedule.rb 中创建一个文件。使用此文件,您可以调用任何 rake 任务、运行命令甚至可以调用类的方法。

    例如:

    every 10.minutes do
       # run rake task or call some class's method
    end
    

    但是如果你坚持不使用与 cronjob 相关的 gem,那么你应该使用一些 gem,比如 foreman

    它易于使用。可以向this blogthis railscast学习

    编辑:

    这个SO question 可能会帮助你进一步...

    最新编辑:

    是的,可以查看here。它建议使用this add-ons,它是免费的:)

    【讨论】:

    • 是的,我已经在另一个应用程序中尝试过这个,但是这些可以在 heroku 上免费使用吗?
    猜你喜欢
    • 2016-04-28
    • 2017-02-13
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多