Streaming、Daemon、Cron Job,你怎么用? (在红宝石中)

Posted

技术标签:

【中文标题】Streaming、Daemon、Cron Job,你怎么用? (在红宝石中)【英文标题】:Streaming, Daemons, Cronjobs, how do you use them? (in Ruby) 【发布时间】:2010-12-02 21:33:12 【问题描述】:

我终于有时间研究流式传输、守护进程和 cron 任务以及围绕它们构建的所有精美宝石!但我不清楚 如何/何时使用这些东西。

我有几个问题:

1) 如果我想拥有一个不断更新、实时更新的网站,其中包含我的 Facebook 朋友的活动动态、我最喜欢的书籍上最新的亚马逊书评以及我的 Twitter 动态,我会使用 Daemon gem、用于流式传输内容的 ruby​​-yali gem 和Whenever gem 创建一些自定义流实现,可以说,每 3-10 秒检查一次这些站点以查看我要查找的内容是否已更改?它会这样工作吗?还是通常/最好以不同的方式完成?

2) (1) 是否过于占用处理器资源?鉴于您想要实时更新的网站没有流媒体 API,您是否有更好的方法,一种更好的实时内容流媒体方式?我正在考虑每隔几秒钟在一个单独的小型 ruby​​ 应用程序(带有守护进程和 cronjobs)中发送一个请求,获取 json/xml 结果,使用 nokogiri 删除我不需要的东西,然后通过cmets/books/posts/etc. 的小列表,构建更改内容的提要,并使用 Juggernaut 或其他东西将这些更改推送到某些 Rails 应用程序。这行得通吗?

我想这一切都归结为一个问题:

实时流式传输某些网站的最新内容是如何工作的?你怎么做呢? ...所以如果有人在我的网站上,他们可以实时看到刚刚发布的新消息或新书?

期待您的回答, 兰斯

【问题讨论】:

【参考方案1】:

首先,如果网站不提供 API,则强烈表明解析和提取其数据是不合法的,但您最好查看其使用条款和隐私政策。

我个人不知道有什么叫做“Streaming API”的东西,但是假设他们有一个 API,你仍然需要提取它提供的结果(xml,json,....),解析它们并呈现他们返回给用户。该策略会因您的应用类型而异:

    桌面应用:然后直接拉取数据,解析后提供给用户,很多应用就像Twhirl一样。 Web 应用程序:那么您需要减少提取数据的时间。通常,您将从 API 中提取数据并将其存储。但是,存储数据有点棘手!您不希望您的数据库被应用程序锁定,因为它会通过极端的拉取查询来检索数据。一种方法是使用推送方法;在这种情况下按照选项 2 获取数据,然后推送给用户。如果您想要即时更新,例如聊天,您可以查看orbited。如果可以将数据保存到某种用户和关注者的“收件箱”,那么据我所知,最简单的方法是使用 IMAP 将更新发送到用户收件箱。

【讨论】:

关于使用条款和隐私政策的要点。我更想知道这是否可用(将足够快,不会占用太多资源或花费太多来每隔几秒钟处理一次这些东西,等等)。现在对聊天不感兴趣,更多的是定期(第二)间隔抓取页面。感谢您的提示。

以上是关于Streaming、Daemon、Cron Job,你怎么用? (在红宝石中)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用cron检查程序是否在后台运行,并在需要时启动它?

线程“streaming-job-executor-0”中的异常 java.lang.NoClassDefFoundError

xxl-job中的cron表达式详解

6.Spark streaming技术内幕 : Job动态生成原理与源码解析

Spark Streaming Job 不可恢复

Spark Streaming源码解读之Job详解