在rails控制器

时间:2016-05-18 12:30:11

标签: ruby-on-rails ruby multithreading background-process

让我们举个例子:

class UsersController
  def create
    User.create(...)
    PushService.push('you have a new friend') # Can take 1/2 seconds
  end
end

我想在控制器中执行一个简短的任务(推送一些用户)。我没有同步执行此操作,因为它可能会增加响应时间,但使用ResqueSidekiqDelayJob似乎夸大了我。

使用简单Thread的后果是,在控制器中使用它是一个好习惯吗?你有其他选择吗?

1 个答案:

答案 0 :(得分:1)

启动一个线程对于简单的事情来说并不坏,但你必须手动处理它出错的所有可能性(冻结,异常)

您可能希望研究使用sucker_punch ActiveJob后端 - 它在进程中运行任务,但您将获得activejob(更容易测试,生成器等)的好处以及以后切换到其他后端的能力(如果需要)。 p>