如何建立大型/忙碌的RSS资讯提供

时间:2020-03-05 18:52:33  来源:igfitidea点击:

我本周一直在使用RSS feed,对于下一个技巧,我想为内部应用程序日志构建一个。我们有一个集中化的数据库表,大量的批处理和Intranet应用程序使用该表来发布日志消息。我想根据该表创建一个RSS feed,但是我不确定如何处理该卷,即使在平常的一天中,每天也可能有数百个条目。一个特殊的让我们想要退出的日子可能会看到数千。有什么想法吗?

解决方案

回答

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

就是说,在这类系统中,具有严重性级别很常见。我们可以将查询字符串参数添加到用于指定严重性的URL的末尾。如果设置为" DEBUG",那么无论多么琐碎,我们都会看到每个事件。如果将其设置为" FATAL",则只会看到严重程度为"系统故障"的事件。

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

然后,我们可以针对各种类别和严重性使用多个RSS feed。这应该使我们可以调整警报级别,使我们获得可接受的级别。

回答

好吧,我决定了我该如何处理。我正在为每一列使用时间戳字段,并按天分组。要使它成为可能需要一点SQL-fu,因为当然那里有一个完整的时间戳,而且我需要半智能地了解如何从组内选择要显示的日志消息,但这还不错。此外,我正在构建它,使我们可以选择监视哪个应用程序,然后显示特定日期的每条消息(最多50条)。

那使我陷入合理的境地。

我仍然希望对这个更通用的问题给出一个很好的答案:"我们如何联合许多重要的消息,而如果丢失一条消息可能会成为问题?"

回答

如果我们要构建一个带有不可错过的通知的系统,那么发布-订阅机制(使用XMPP,ApacheMQ支持的其他协议之一或者类似协议)将比联合机制更适合。我们需要采取某种措施来生成通知的系统与使用通知的系统之间的耦合,以确保使用者不会错过通知。

(我们可以使用RSS或者Atom作为传输格式来执行此操作,但这可能不是常见的用例;我们需要根据使用者及其以前看到的通知来更改显示的通知。)

回答

在这种情况下,更多的是经理的仪表板:今天有多少工作需要支持,现在日志中是否有任何紧迫的内容,以及当我们早上第一次到达时,可以衡量一整夜批处理工作出了什么问题。

回答

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

回答

我会尽可能地拆分提要,并让用户根据需要对其进行组合。如果我这样做的话,我可能会考虑使用Django和联合框架。

Django的模型可能可以处理代表我们关心的表的数据结构。

我们可能拥有一个可以捕获所有内容的URL,例如:`r'/ rss /(?(\ w *?)/)+'``(我认为这可能有用,但现在无法对其进行测试,因此可能无法完美的)。

这样,我们可以使用以下URL :(已编辑以取消示例URL的自动链接):

  • 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.

具有单独的,可链接的提要意味着用户可以一次订阅一个提要,也可以将他们关心的提要合并到一个更大的提要中。只要他们更容易阅读,他们就可以做到。