今天发现服务器上的sidekiq 线程全忙。队列里任务积累了好多。
sidekiq里的任务基本都是爬虫脚本,都需要请求外部网站。但是有些网站的响应时间或者读取时间太久,一直一直卡在那里。使得后面的任务不能执行。
所以我们就应该控制请求外部链接的读取时间,避免线程卡住。
在任务里请求外部网站有两种方式:
第一种用rest_client请求.
RestClient.post url, params
改进方法:
RestClient::Request.execute(
:method => :post,
:url => url,
:payload => params,
:timeout => 10,
:open_timeout => 10
)
另一种用Nokogiri请求。
Nokogiri::HTML.parse(open(url))
改进方法:
Nokogiri::HTML.parse(open(url, :read_timeout => 10))
来源:https://www.cnblogs.com/wangyuyu/p/4278995.html