让我们举个例子:
class UsersController
def create
User.create(...)
PushService.push('you have a new friend') # Can take 1/2 seconds
end
end
我想在控制器中执行一个简短的任务(推送一些用户)。我没有同步执行此操作,因为它可能会增加响应时间,但使用Resque
,Sidekiq
或DelayJob
似乎夸大了我。
使用简单Thread
的后果是,在控制器中使用它是一个好习惯吗?你有其他选择吗?
答案 0 :(得分:1)
启动一个线程对于简单的事情来说并不坏,但你必须手动处理它出错的所有可能性(冻结,异常)
您可能希望研究使用sucker_punch ActiveJob后端 - 它在进程中运行任务,但您将获得activejob(更容易测试,生成器等)的好处以及以后切换到其他后端的能力(如果需要)。 p>