通过rails服务器/乘客启动上帝?

发布于 2024-11-23 18:25:28 字数 699 浏览 1 评论 0原文

以下情况:

我有一个服务器和一些应该一直运行的 rake 任务,fe:

# email_sender.rake (except only)
while true
  fetch all mail entries.each do |mail|
     mail.deliver
  end
end

或另一个 rake 任务

# update_market.rake (except only)
while true
  Market.fetch_exchange_rate!
  sleep 1
end

为了启动和停止这些 rake 任务,我使用 god gem,它工作得很好。 但我不清楚一件事:我可以使用初始化程序在 Rails 中启动我的上帝服务器吗? 我在

# rails_root/config/initializers/start_god.rb
system 'god -c /www/rails_root/config/god.config'

我的开发环境中尝试过它,正如我想要的那样,即使我退出 Rails 服务器,服务器也会运行。

但是在生产模式下运行时有什么注意事项吗?

感谢您的意见!

ps 我不想使用 CRON!这个解决方案对我来说非常完美,我不想更改为另一个调度程序/队列/后台作业系统!

Following situation:

I have a server and some rake tasks which should run the whole time, f.e.:

# email_sender.rake (except only)
while true
  fetch all mail entries.each do |mail|
     mail.deliver
  end
end

or another rake task

# update_market.rake (except only)
while true
  Market.fetch_exchange_rate!
  sleep 1
end

For starting and stopping these rake tasks i use the god gem and it works quite well.
But one thing isn't clear to me: Can i start my god server within rails with an initializer? f.e.

# rails_root/config/initializers/start_god.rb
system 'god -c /www/rails_root/config/god.config'

I tried it in my development environment and as i wanted, the server runs even if i exit the rails server.

But is there any caveat when running this in production mode?

Thanks for your opinion!

p.s. I DONT WANT TO USE CRON! This solution is perfect to me and i dont want to change to another scheduler/queue/background job system!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

去了角落 2024-11-30 18:25:28

使用 Rails 初始化程序可能不是启动该过程的最佳方式,这并不是它们真正的目的。你用 Procfile 研究过 Foreman 吗?它可能适合你。

http://ddollar.github.com/foreman/

Using a Rails initializer probably isn't the best way to start that process, it's not really what they were intended for. Have you looked into Foreman with Procfile? It might suit you.

http://ddollar.github.com/foreman/

雨后咖啡店 2024-11-30 18:25:28

您使用什么来部署您的应用程序?例如,如果您使用 Capistrano,则应该使用 Capistrano 来启动并重新加载 god(在您的生产环境中)。

对于开发来说,foreman 是一个非常方便的工具来管理这些流程,正如 ctcherry 提到的。您还可以直接从您的个人资料中导出 God 配置文件

What are you using for deploying your application? If you are using Capistrano for example, you should be using Capistrano to start and reload god (in your production environment).

For development, foreman is a very convenient tool to manage these processes, as ctcherry mentioned. You can also export a god config file directly from your Profile.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文