将一个巨大的字符串作为参数传递给 Sidekiq 工作人员是个好主意吗?

use*_*317 4 ruby ruby-on-rails nokogiri sidekiq

我正在开发一个爬虫,它可以浏览网站并在 Sidekiq 工作人员中解析网站的特定部分。想象一下当抓取工具访问一个包含 10 个我感兴趣的元素并且每个元素都在 Sidekiq 中排队的网站时的情况。目前,我将元素的源代码作为参数传递,稍后将在 Nokogiri 中加载。我的问题是 - 将一个巨大的字符串作为参数传递给 Sidekiq 工作人员是个好主意吗?字符串长度始终在 77,000-80,000 个字符之间,因此它确实很大。或者我应该将其存储在临时表中并在 Nokogiri 加载之前找到特定记录?

小智 5

我建议将字符串存储在 S3(或任何其他对象存储)上,并使用返回的 URL 来获取字符串并处理作业。

这样您就可以确保小型 Redis 服务器可以支持许多并发 sidekiq 作业并且不会耗尽 RAM。