Yan*_*nis 11 ruby ruby-on-rails
我在ubuntu设置上有rails 4.2 + sidekiq,我每小时都会用cron开始我的工作
bin/rails runner -e production 'MyJob.perform_later'
Run Code Online (Sandbox Code Playgroud)
这基本上需要一份工作并将数据放到redis中,因此sidekiq可以接受并从那里开始.但每次我这样做,我有这个春天过程中卡住和等待的东西(消耗内存)
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
Run Code Online (Sandbox Code Playgroud)
有时我看到其中的10个.有没有办法不启动弹簧服务器?
谢谢.
jan*_*oeh 16
如果你想保持一般的弹簧,你可以通过在DISABLE_SPRING环境变量前面加上一个命令来暂时禁用spring :
DISABLE_SPRING=1 bin/rails runner -e production 'MyJob.perform_later'
Run Code Online (Sandbox Code Playgroud)
编辑:感谢Tom Lobato和tpett的纠正.
Kos*_*sis 15
发生这种情况是因为您正在使用springgem并且您的bin文件夹已被"弹化".
如果您查看bin/rails文件,您将看到spring已加载,然后继续运行您从中请求的任何内容.
您可以通过运行"取消弹出"您的bin文件夹
bin/spring binstub --remove --all
Run Code Online (Sandbox Code Playgroud)
这当然意味着您选择退出春天为您提供的所有性能优势.这应该适用于生产环境.实际上,建议您不要在生产环境中安装弹簧 [1].
因此,我建议您修改Gemfile,并把spring下development组.在制作中,您通常会执行以下操作:
bundle install --without development test
Run Code Online (Sandbox Code Playgroud)
这样春天永远不会进入你的生产服务器.另请参阅Github上的相关问题.
-