Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Ruby中从Capybara运行时,webkit_server会定期挂起大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到一个问题,当访问一个URL时,带有Capybara和capybara-webkit的webkit_server实例运行无头连接到本地Xvfb屏幕时挂起.几分钟之后,它会重复访问不同的URL并执行查找器. (我正在使用capybara在vanilla Ruby中的屏幕抓取应用程序,而不是进行测试.)

我已经确认,当它挂起时,站点仍然可以访问(例如,通过命令行上的curl或wget).我也尝试在超时块中包装调用访问的Ruby代码和后续查找器,以便等待新的URL访问60秒后,任何访问()尝试都会在第一次发生之后失败.解决问题的唯一方法是消除Ruby进程调用Capybara / capybara-webkit和webkit_server进程并重新启动.

当我拖动webkit_server进程时,我会重复地看到这样的输出:

clock_gettime(CLOCK_MONOTONIC,{5821,680279627}) = 0
gettimeofday({1330890176,712033},{0,33052112}) = 0
gettimeofday({1330890176,712087},140736435864256}) = 0
gettimeofday({1330890176,712137},33108640}) = 0
clock_gettime(CLOCK_MONOTONIC,680486036}) = 0
clock_gettime(CLOCK_MONOTONIC,680530091}) = 0
read(7,0x1fac1b4,4096)                = -1 EAGAIN (resource temporarily unavailablE)

如果我支持调用它的Ruby进程,它挂在一个read()上:

Process 3331 attached - interrupt to quit
read(5,^C <unfinished ...>
Process 3331 detached

我知道Ruby代码挂在Capybara visit()方法上.

任何想法我可以做什么来排除故障或纠正这个是赞赏.我假设这个问题与某些资源有关,webkit_server需要访问URL,但我不知道接下来要尝试什么.

谢谢!

解决方法

capybara-webkit 1.0随机挂在整个套间,对我来说也是如此.

简单地添加“薄”是不够的.
但是明确使用Thin handler是有效的.添加到env.rb:

Capybara.server do |app,port|
  require 'rack/handler/thin'
  Rack::Handler::Thin.run(app,:Port => port)
end

注意瘦使用警告:https://github.com/thoughtbot/capybara-webkit/issues/399#issuecomment-22328028

大佬总结

以上是大佬教程为你收集整理的在Ruby中从Capybara运行时,webkit_server会定期挂起全部内容,希望文章能够帮你解决在Ruby中从Capybara运行时,webkit_server会定期挂起所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。