Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 延迟作业:何时以及如何使用_Ruby On Rails_Delayed Job - Fatal编程技术网

Ruby on rails 延迟作业:何时以及如何使用

Ruby on rails 延迟作业:何时以及如何使用,ruby-on-rails,delayed-job,Ruby On Rails,Delayed Job,我对延迟的工作没有什么疑问。我现在已经在开发中配置了这两个gem。但我不确定我是否需要使用它们,或者即使我使用它,我也不确定我应该如何在服务器中使用它 gem 'delayed_job_active_record' gem 'daemons', '~> 1.2', '>= 1.2.3' 我有一个简单的应用程序,每年向大约300-400名客户发送两次电子邮件。这么少的邮件有必要使用延迟工作宝石吗?我们的服务器在一年中的这两个时间里根本不忙 如果我使用延迟作业,我必须首先启动守护进程。

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

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

  • 如果我使用延迟作业,我必须首先启动守护进程。在开发中,我这样做
    bundle exec rake jobs:work
    。因为此进程将始终在服务器中运行。这是否会导致性能问题?我是否需要使用其他服务器或其他东西来运行延迟作业进程

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


  • 第一-我认为在所有异步作业中使用DJ是一种很好的做法,假设我们可以在电子邮件服务器上遇到错误或任何其他错误,而您的客户端将不会收到此电子邮件,如果出现错误,DJ将稍后重试此作业

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

    第三,upstart脚本是实现这一点的正确方法,S.O将处理这一点,并在服务停止时重新启动服务,gem Foreman可以帮助您完成这一点

    暴发户示例:


    再见

    这只是我的观点,但我不认为这有点过分,我不认为这会导致任何性能问题。您可以调整delayed_job,使其仅每隔5或10分钟或其他时间轮询一次作业,而不是默认值(可能更频繁),从而将对服务器的影响降至最低,因为这看起来不像是一个关键任务操作。