今天发现服务器上的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))

 

 

相关文章:

  • 2021-09-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
  • 2022-12-23
  • 2021-12-09
猜你喜欢
  • 2021-11-30
  • 2022-12-23
  • 2021-04-13
  • 2021-07-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案