【问题标题】:Rails runner without spring不带弹簧的滑轨
【发布时间】:2020-05-07 21:10:00
【问题描述】:

我在 ubuntu 设置上安装了 rails 4.2 + sidekiq,并且我每小时都使用 cron 开始我的工作,类似

bin/rails runner -e production 'MyJob.perform_later'

这基本上是一个工作并将数据放入redis,以便sidekiq可以接受它并从那里开始。但是每次我这样做时,我都会让这个 spring 进程卡住并等待某些东西(消耗内存)

ps aux | grep spring
root      Sl   07:13   0:00 spring server | myapp | started 6 secs ago
root      Ssl  07:13   0:03 spring app    | myapp | started 6 secs ago | production mode

有时我会看到其中的 10 个。有什么办法不启动spring server?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    如果您想保持一般的 spring,您可以通过在其前面加上 DISABLE_SPRING 环境变量的前缀来暂时禁用单个命令的 spring:

    DISABLE_SPRING=1 bin/rails runner -e production 'MyJob.perform_later'
    

    【讨论】:

      【解决方案2】:

      发生这种情况是因为您正在使用 spring gem 并且您的 bin 文件夹已“弹性化”。

      如果您查看bin/rails 文件,您会看到spring 已加载,然后继续运行您请求的任何内容。

      您可以通过运行“取消弹出”您的 bin 文件夹

      bin/spring binstub --remove --all
      

      这当然意味着您选择退出 Spring 为您提供的所有性能优势。这对于生产环境应该没问题。事实上,建议您不要在生产环境中安装 spring [1]。

      所以我建议你修改你的Gemfile 并将spring 放在development 组下。在生产中,您通常会执行以下操作:

      bundle install --without development test
      

      这样,spring 永远不会进入您的生产服务器。另请参阅 Github 上的 this related issue

      --

      1 . Spring project readme file

      【讨论】:

        猜你喜欢
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 2018-10-03
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        相关资源
        最近更新 更多