【问题标题】:Rails 2 Delayed_job gemRails 2 Delayed_job gem
【发布时间】:2014-10-30 06:55:30
【问题描述】:

我正在开发 Rails 2 应用程序,我需要在后台工作中发送邮件。
我有 Notifier 模型,我从控制器调用模型方法来发送邮件。
我在使用延迟作业之前调用该方法 Notifier.deliver_method_name(params) 并在创建之后使用它 Notifier.delay.deliver_method_name(params)

现在我的问题出现了

1) 我是否需要启动 rake 作业:在开发中在后台发送邮件的工作,如果是,我应该在每次启动服务器时运行它吗?
2) 如果我第一次运行 rake 作业,我需要在生产中做什么:工作?
3)如果发生任何错误,那么只有延迟作业中有一个条目,如果它成功,那么延迟作业表中没有条目是正确的。

我点击下面的链接

https://github.com/collectiveidea/delayed_job/tree/v2.0

谢谢:)

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    1) 我是否需要启动 rake 作业:在开发中在后台发送邮件的工作,如果是,我应该在每次启动服务器时运行它吗?

    是的,您必须单独启动 rake 任务。

    Workers can be running on any computer, as long as they have access to the database and their clock is in sync. Keep in mind that each worker will check the database at least every 5 seconds.

    2) 如果我第一次运行 rake 作业,我需要在生产中做什么:工作?

    是的,您必须使用 RAILS_ENV=production script/delayed_job start,但我建议您在每次部署时停止并启动它以完成更改。

    3) 是否正确,如果发生任何错误,则延迟作业中只有一个条目,如果成功则延迟作业表中没有条目。

    不,这完全取决于您的配置

    # config/initializers/delayed_job_config.rb
    Delayed::Worker.destroy_failed_jobs = false
    Delayed::Worker.sleep_delay = 60
    Delayed::Worker.max_attempts = 3
    Delayed::Worker.max_run_time = 5.minutes
    

    【讨论】:

    • 对于第二个问题,我需要运行 RAILS_ENV=production script/delayed_job start OR rake jobs:work 如果两个都先运行?
    • 对于第三种情况,initializers 文件夹中没有delayed_job_config.rb 文件,那么会发生什么?是否建议手动创建该文件?
    • 两个都可以用但是我用RAILS_ENV=production script/delayed_job start
    • 我在我的初始化中有这个 # This initializer was added because v2.0.2 of DelayedJob wouldn't # initialize the Delayed::Job class when installed as a gem. Delayed::Worker.guess_backend 根据文档有配置的可能性。所以我建议你创建一个初始化文件并根据需要配置插件
    猜你喜欢
    • 2011-05-23
    • 2013-03-05
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2011-08-22
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多