如何构建大/繁忙的RSS源

时间:2008-09-12 21:29:43

标签: rss

本周我一直在玩RSS feed,为了我的下一招,我想为我们的内部应用程序日志构建一个。我们有一个集中的数据库表,我们的无数批处理和内部网应用程序用于发布日志消息。我想创建一个这个表的RSS源,但我不知道如何处理卷 - 即使在正常的一天,每天也可能有数百个条目。一个特殊的,你想要退出的一天可能会看到几千。有什么想法吗?

6 个答案:

答案 0 :(得分:3)

我会将Feed设为静态文件(您可以轻松地为其中的数千个提供服务),定期重新生成。然后你有一个更广泛的选择,因为它不必运行低于秒,它甚至可以运行几分钟。用户仍然可以获得完美的下载速度和合理的更新速度。

答案 1 :(得分:2)

如果您正在构建一个不能错过通知的系统,那么pub-sub机制(使用XMPP,ApacheMQ支持的其他协议之一,或类似的东西)将更适合于联合机制。您需要在生成通知的系统和使用通知的系统之间进行一些耦合,以确保消费者不会错过通知。

(你可以使用RSS或Atom作为传输格式,但它可能不是常见的用例;你需要改变根据消费者显示的通知以及它之前看到的通知。)

答案 2 :(得分:1)

我尽可能地分开了Feed,让用户根据需要重新组合它们。如果我这样做,我可能会考虑使用Django和联合框架。

Django的模型可能会处理表示你关心的表的数据结构。

你可以拥有一个捕获所有内容的URL,例如:r'/rss/(?(\w*?)/)+'(我认为这可能有效,但我现在无法测试它,所以它可能不完美)。

这样你可以使用像(编辑取消自动链接示例网址)这样的网址:

  • http:// feedserver / rss / batch-file-output /
  • http:// feedserver / rss / support-tickets /
  • http:// feedserver / rss / batch-file-output / support-tickets /(前两者合二为一)

然后在视图中:

def get_batch_file_messages():
    # Grab all the recent batch files messages here.
    # Maybe cache the result and only regenerate every so often.

# Other feed functions here.

feed_mapping = { 'batch-file-output': get_batch_file_messages, }

def rss(request, *args):
    items_to_display = []
    for feed in args:
        items_to_display += feed_mapping[feed]()
    # Processing/returning the feed.

拥有单独的可链接Feed意味着用户可以一次订阅一个Feed,或者将他们关心的Feed合并为一个更大的Feed。无论他们更容易阅读,他们都能做到。

答案 3 :(得分:0)

在不知道您的申请的情况下,我无法提供具体的建议。

也就是说,在这些类型的系统中,通常具有严重程度。您可以将一个查询字符串参数添加到指定严重性的URL末尾。如果设置为“DEBUG”,您将看到每个事件,无论多么微不足道。如果将其设置为“致命”,则只能看到大小为“系统故障”的事件。

如果事件仍然太多,您可能希望将事件细分为某种类别系统。同样,我会将此作为查询字符串参数。

然后,您可以为各种类别和严重性提供多个RSS源。这应该允许您调整您获得可接受级别的警报级别。

答案 4 :(得分:0)

好的,我决定如何处理这件事。我正在为每列使用timestamp字段并按天分组。它需要一些SQL-fu来实现它,因为当然那里有一个完整的时间戳,我需要半智能关于我如何选择从组内显示的日志消息,但它并不是太糟糕。此外,我正在构建它以让您选择要监视的应用程序,然后显示特定日期的每条消息(最多50个)。

这让我感到理智。

我仍然希望对更通用的问题有一个很好的答案:“你如何联合许多重要的信息,哪些信息丢失可能是个问题?”

答案 5 :(得分:0)

在这种情况下,它更像是一个经理的仪表板:今天支付了多少工作,现在日志中有什么紧迫的事情,以及我们第一次到达早上作为衡量问题的方法。隔夜批量工作。