延迟工作:何时以及如何使用

时间:2017-01-30 10:14:22

标签: ruby-on-rails delayed-job

我对延迟工作的问题很少。我现在正在开发中配置这两个宝石。但我不确定是否需要使用它们,或者即使我使用它,我应该如何在服务器中使用它。

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中运行该命令。目前,我打开一个终端并运行该命令。但我想如果我关闭终端,这个过程也会停止。那么我应该如何启动它以使其在后台运行?

1 个答案:

答案 0 :(得分:1)

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

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

3rd - 一个upstart脚本是正确的方法,S.O将处理这个并且如果它停止将重新启动服务,gem Foreman可以帮助你。

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

见啊!