【发布时间】:2012-12-21 14:09:55
【问题描述】:
对于像邮寄和发布到外部网站这样的长时间运行的进程,是否可以使用 Ruby Thread.new 代替像 Delayed Jobs 或 Resque 这样的后台工作?
【问题讨论】:
标签: ruby-on-rails ruby delayed-job resque
对于像邮寄和发布到外部网站这样的长时间运行的进程,是否可以使用 Ruby Thread.new 代替像 Delayed Jobs 或 Resque 这样的后台工作?
【问题讨论】:
标签: ruby-on-rails ruby delayed-job resque
这取决于你所说的 OK。 Ruby 有一个全局解释器锁(大多数实现都这样做 - JRuby 是一个例外),这意味着您不会使用 Thread.new 方法获得真正的并发性。这并不意味着您根本没有获得任何并发性。这在多个地方进行了更深入的讨论:
Delayed Jobs 和 Resque 方法都涉及让一个或多个单独的进程执行长时间运行的操作。对于多个进程,您的 rails 应用程序和后台工作进程之间将具有真正的并发性,因为 GIL 根本不会妨碍您。
【讨论】: