【问题标题】:whenever + delayed_job with cron job in starting worker每当 + delay_job 在启动工作时使用 cron 作业
【发布时间】:2012-04-21 04:53:58
【问题描述】:

我正在学习cron作业和延迟作业,我想使用后台作业发送电子邮件;为此,我正在使用delayed_job gem。我不想通过运行rake jobs:work 命令手动启动worker,但我想在cron 作业中设置这个rake,所以每当用户登录到仪表板时,这个命令就会被触发,并且邮件会发送到他的地址。以下是我的代码:

发邮件方式

def dashboard      
    @user = User.find(params[:id])      
    UserMailer.delay.initial_email(@user)      
end      

用户邮箱

def initial_email(user)      
    @user = user     
    mail(:to => user.email,:subject => "Welcome to my website!")       
end      

对于我使用“whenever” Gem 的 cron 作业,我应该在 schedule.rb 文件中写入什么内容,以便在登录仪表板时无需手动运行 worker 就可以收到邮件?

【问题讨论】:

    标签: ruby-on-rails-3 cron delayed-job rake-task whenever


    【解决方案1】:

    DelayedJob 应该一直在后台运行,因此不需要启动它。 工作代理检查队列以查看是否需要执行任何任务并运行它们。 这很像您的应用程序的第二个实例,它在后台检查需要运行的任务。

    所以你应该用script/delayed_job start 启动worker agent,让它一直运行。您可以使用单独的工具(例如 monit 或 god)来监控您的工作代理,以确保它始终在运行。

    【讨论】:

    • 感谢您提供这些信息,所以如果我启动 worker 然后关闭应用程序 worker 仍然运行吗?或者我需要再次启动工人?我基本上需要的是当用户登录到他的仪表板邮件时应该发送如果你建议我任何代码那么你是最受欢迎的或者以前代码中的任何更改对我来说也很好......并且对这些基本问题感到抱歉。
    猜你喜欢
    • 2013-10-20
    • 2011-10-22
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多