Resque预加载何时触发?配置rake_eager_load对作业的影响
关于Resque预加载与
rake_eager_load配置的疑问解答 config.rake_eager_load = true仅作用于Rake任务,和Resque作业的运行逻辑完全无关。它只是让你执行Rake命令时,Rails会预先加载所有类,解决Rake任务里类未定义的问题,不会影响Resque worker的行为。- Resque的预加载时机:
- Resque worker是独立进程,每次启动时会完整加载一次Rails环境。如果你的环境配置(比如
config/environments/production.rb)里设置了eager_load = true,worker启动时就会执行一次全类预加载。 - 这个worker后续处理所有作业的过程中,除非重启worker进程,否则不会再重复预加载。也就是说:预加载是每个worker进程启动时执行一次,不是每次运行作业都加载,也不是部署时自动执行——部署后必须重启worker,才会触发新的预加载来加载更新后的代码。
- Resque worker是独立进程,每次启动时会完整加载一次Rails环境。如果你的环境配置(比如
- 如果你想让Resque worker实现预加载,不需要调整
rake_eager_load,只要确保worker运行的环境中Rails.application.eager_load为true即可。
内容的提问来源于stack exchange,提问作者transient_panda
相关产品推荐
相关产品推荐

