Sidekiq任务堵塞问题
今天发现服务器上的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))
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步