【问题标题】:Best way to run rails background jobs with Openshift使用 Openshift 运行 Rails 后台作业的最佳方式
【发布时间】:2015-01-24 23:24:02
【问题描述】:

我在 OPENSHIFT 上有一个 rails 3.2.13 应用程序。我需要管理后台工作的最佳方式,例如每天、每周或每月的搜索提醒(当用户可以订阅他们所做的搜索并获得新产品的电子邮件提醒时)。 我已经按照these instructions 安装了 REDIS 墨盒。 ResqueSidekiq 有可用的 OPENSHIFT 墨盒,但安装命令不起作用。

我设法根据这些instructions 将 Resque 安装为 gem,当我使用 rake 命令启动它时它正在工作: RAILS_ENV=production bundle exec rake resque:work QUEUE='*' 但是一旦我关闭命令行工具,工作人员就会停止。当我对同一个 rake 任务使用动作挂钩时,它只能工作一段时间,然后我必须再次重新启动工作人员。我怎样才能在生产中只启动一次工人?

【问题讨论】:

    标签: ruby ruby-on-rails-3 openshift resque sidekiq


    【解决方案1】:

    我认为你最好为你需要做的事情创建 rake 任务,然后在你需要它们运行时使用 cron 来触发它们。

    【讨论】:

    • 谢谢你的回答,我也想过。但是,我怎样才能从我的 rails 控制器开始一个 cron 作业(如果该作业没有安排)。例如,每次创建新产品时,我都必须搜索订阅此类产品的用户并向他们发送包含更新的电子邮件。
    • 设置您的 rake 任务以查找已创建的新产品,然后它可以向所有订阅的人发送电子邮件,让它每小时运行一次,否则可能就足够了。
    • 如果 rake 任务每小时或经常运行,是否会影响站点性能?我听说运行 rake 任务会加载整个 Rails 堆栈并且会占用大量 CPU 和内存。
    • 有可能,肯定会占用一些cpu和内存
    • 我发现有用于openshift的工头墨盒。我按照here 的描述安装了它,我的 resque 工作人员开始工作。与 cron 和 rake 相比,处理搜索警报等后台作业不是更好的方法吗?或者你仍然建议我使用 cron 和 rake 任务?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 2013-08-27
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2023-01-10
    • 2016-12-05
    相关资源
    最近更新 更多