在特定时间内打开和关闭流式客户端

时间:2013-11-21 04:53:38

标签: ruby-on-rails ruby background-process twitter-streaming-api

我不经常打开与TweetStream的Twitter流媒体连接,并听取大约一个小时的新状态。

我应该如何打开连接,保持打开一小时,然后优雅地关闭它?

通常对于后台进程我会使用Resque或Sidekiq,但根据我的理解,这些是用于尽快完成任务,而不是冷却和保持连接打开。

我考虑使用像$twitter_client这样的全局变量但不会横向扩展。

我还想过构建一个在一个盒子上运行的第二个应用程序来处理这个功能,但如果它可以以某种方式集成到主应用程序中,这似乎是过分的。

为了澄清,我可以毫不费力地启动流程,捕获推文并正确使用它们。我只是不确定我应该开始什么。一个新的应用?某种守护进程?

我从未遇到过这样的问题,而且完全迷失了。任何方向都会非常感激!

1 个答案:

答案 0 :(得分:0)

虽然不是直接修复,但我会看到这一点:


<强>时间

你正在处理时间问题,所以我会看看可以使用哪些以时间为中心的流程来引导连接一小时

具体来说,我会考虑在服务器上运行某种工作,您可以在特定时间(如果需要以编程方式)触发,打开&amp;关闭连接。我只有resque的经验,但正如你所说,它可能不适合这项工作。如果我找到更好的解决方案,我肯定会更新答案


<强>存储

连接到TweetStream后,您将需要了解如何捕获该时段的推文。为工作创建一个数据表似乎是浪费,所以我倾向于使用类似Redis的东西来存储你需要的推文

这可用于输出您需要的推文,允许您模拟存储/捕获它们,但在小时窗口过后删除它们


投放

我不知道你正在使用这个功能的上下文,所以我会尽可能地给你一般的流程概念

要显示推文,我会亲自在数据库中创建某种记录,以显示当天ping TweetStream的时间(如果它发生变化;如果它是常量,只需在初始化程序中设置常量),以及然后只是包含一些逻辑来尝试从Redis获取推文。如果您能够收集它们,请按照您的意愿显示它们,否则不要打印任何内容

希望能为您提供更广泛的想法吗?