【问题标题】:Delayed job: when and how to use延迟工作:何时以及如何使用
【发布时间】:2017-06-15 11:02:39
【问题描述】:

我有一些关于延迟工作的疑问。我现在已经在开发中配置了这两个 gem。但我不确定我是否需要使用它们,或者即使我使用它,我应该如何在服务器中使用它。

gem 'delayed_job_active_record'
gem 'daemons', '~> 1.2', '>= 1.2.3'
  1. 我有一个简单的应用程序,它每年两次向大约 300-400 名客户发送电子邮件。对于这么少的电子邮件,是否有必要使用延迟工作宝石?我们的服务器在一年中的这两次都不忙。

  2. 如果我使用延迟作业,我必须先启动守护程序。在开发中,我这样做bundle exec rake jobs:work。由于此过程将始终在服务器中运行。这会导致性能问题吗?我是否必须使用其他服务器或其他东西才能运行延迟作业流程?

  3. 最后,如何在生产环境中运行命令bundle exec rake jobs:work。目前,我打开一个终端并运行命令。但我认为如果我关闭终端,该过程也会停止。那么我应该如何启动它才能让它在后台运行呢?

【问题讨论】:

  • 这只是我的看法,但我不认为它是矫枉过正,我不认为它会导致任何性能问题。您可以调整 delay_job 以仅每 5 或 10 分钟或其他时间轮询一次作业,而不是使用可能更频繁的默认值,从而最大限度地减少对服务器的影响,因为这似乎不是关键任务操作。

标签: ruby-on-rails delayed-job


【解决方案1】:

第一个 - 我认为将 DJ 用于所有异步作业是一个很好的做法,想象一下我们可能会遇到电子邮件服务器出现故障或任何其他错误,而您的客户不会收到这封电子邮件,使用 DJ,如果出现错误,它将稍后重试该作业。

第二 - 我认为你不需要整个服务器来运行 DJ,除非你有很长的处理时间或每分钟有大量工作的繁重工作,在前面描述的情况下,只需要多一点内存足以解决问题。

3rd - upstart 脚本是执行此操作的正确方法,S.O 将处理此问题并在服务中断时重新启动服务,gem Foreman 可以帮助您解决此问题。

新贵示例: https://larry-price.com/blog/2013/08/31/using-foreman-to-create-an-upstart-service

再见!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2012-04-16
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多