![](/img/trans.png)
[英]So, how to remove Rack::ShowExceptions from inside my rack app?
[英]Why is my Rack app hanging?
我编写了一个开源的Rack应用程序和核心程序库,以传输Tradeking.com的股票报价。 这是机架应用程序: https : //github.com/chaddjohnson/trading_websocket_service 。 这是核心库: https : //github.com/chaddjohnson/trading_core 。
我修改了trading_core / lib / trading_core / quote_streamer / tradeking.rb以将流数据输出到控制台,如下所示:
@http.stream do |data|
puts data
流式传输几个小时并输出到控制台后,它只是冻结了。 我完全不知道为什么。 我已尽力确保任何循环都不是无限的。 我已经调试了一个多星期了。
任何想法为什么会这样?
以下是我认为可能会发生的主要文件:
第一次查看您的代码时,我可以想象出出现问题的两个原因:
很高兴我可以将您推向正确的方向!
我最初的预感是关于开放连接的:
您可能需要确保关闭连接:@ http.close在您引用的方法末尾的suresure块中
然后进行一些取证:
听起来,您必须深入研究正在运行的红宝石流程,以找出造成阻塞的原因。 当然,取决于您所使用的操作系统,在Mac和Linux上,您可以使用gdb,strace,dtrace等工具。例如:ruby.dzone.com/articles/debugging-stuck-ruby-processes
我们发现select
被称为很多东西,这使我们对连接保持怀疑。 原来问题出在通过@api ||= ...init code...
重用@api ||= ...init code...
连接@api ||= ...init code...
很高兴您能够找到它是什么! 感谢您发布解决方案!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.