在 rails 控制器中执行一个简短的后台任务
Execute a short background task in a rails controller
举个例子:
class UsersController
def create
User.create(...)
PushService.push('you have a new friend') # Can take 1/2 seconds
end
end
我想在控制器中执行一个短任务(推送一些用户)。我不同步执行,因为它会增加响应时间,但使用 Resque
、Sidekiq
或 DelayJob
对我来说似乎有些夸张。
使用简单的 Thread
会产生什么后果,在控制器中使用它是一种好的做法吗?你有其他选择吗?
启动一个线程对于简单的事情来说并没有那么糟糕,但是你必须手动处理它出错的所有可能性(冻结,异常)
您可能想研究使用 sucker_punch ActiveJob 后端 - 它运行进程中的任务,但您将获得 activejob 的好处(更容易测试、生成器等)以及稍后切换到其他后端的能力, 如果需要的话。
举个例子:
class UsersController
def create
User.create(...)
PushService.push('you have a new friend') # Can take 1/2 seconds
end
end
我想在控制器中执行一个短任务(推送一些用户)。我不同步执行,因为它会增加响应时间,但使用 Resque
、Sidekiq
或 DelayJob
对我来说似乎有些夸张。
使用简单的 Thread
会产生什么后果,在控制器中使用它是一种好的做法吗?你有其他选择吗?
启动一个线程对于简单的事情来说并没有那么糟糕,但是你必须手动处理它出错的所有可能性(冻结,异常)
您可能想研究使用 sucker_punch ActiveJob 后端 - 它运行进程中的任务,但您将获得 activejob 的好处(更容易测试、生成器等)以及稍后切换到其他后端的能力, 如果需要的话。