我们的一个爬虫遇到了一个奇怪的问题。有时它会抛出一个Rails FATAL
某些请求出错,但跟踪非常有限,看起来像这样
[2014-07-01 18:16:37] FATAL Rails :
ArgumentError (invalid %-encoding (c ^ FK+ 9u$_ t Kl
ΥE! =k \ ̕* ߚ>c+<O یo ʘ> C R! 2 D (5 x q#!` 4 p |8 I E
:+ H^9`^ # Vo{ >
=[z )):
lib/locale_middleware.rb:14:in `call'
爬虫用户代理是
Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)
我们可以通过以下方式要求它停止抓取我们robots.txt
,但如果可能的话,最好处理根本原因,不要在这些请求上失败并返回 500。
我们也无法真正重现这种请求,因此任何有关如何生成类似请求的建议都会有很大帮助。
我们在 Ubuntu 12.04 上使用 Rails 3.2.19、Unicorn。这是我们的locale_middleware.rb
特别感谢本杰明·辛克莱尔指出github上的正确问题.
解决方案已描述对此评论:
- 安装机架稳健性 gem
- 将其添加到
application.rb
:
config.middleware.use ::Rack::Robustness do |g|
g.no_catch_all
g.on(ArgumentError) { |ex| 400 }
g.content_type 'text/plain'
g.body{ |ex| ex.message }
g.ensure(true) { |ex| env['rack.errors'].write(ex.message) }
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)