【问题标题】:Monitoring a Twitter stream on a webserver监控网络服务器上的 Twitter 流
【发布时间】:2012-02-21 21:33:24
【问题描述】:

我使用 Tweepy 编写了一个程序,我可以在我的家用计算机上运行它来监控 Twitter 流。 Tweepy 这样做的方式基本上是让 while(true) 循环始终运行。现在我想做的是把这个程序链接到我的 Django 应用程序中。我可以做到这一点的一种方法是将 Twitter 程序留在本地计算机上,并让它在收到消息时更新服务器的数据库。但是,我想知道在我的服务器的后台运行 Twitter 程序需要做什么。我正在使用 Django。

【问题讨论】:

    标签: django twitter tweepy


    【解决方案1】:

    您可以使用Celery,这是一个可以在后台(即在请求/响应周期之外)执行任务的任务队列。它还具有与django-celery 的django 集成。

    您可以将其设置为执行定期任务,即使用 tweetpy 每 5 分钟检查一次 twitter 流并将结果保存到数据库。或者,您可以设置一个触发操作的任务,即当用户单击 web 应用程序上的某些内容时,启动一个后台任务来抓取 twitter。

    如果您不想遇到这种麻烦,您也可以使用 Cron 每 X 分钟执行一次操作,或者使用简化的队列应用程序。也就是说,Celery 经过良好测试且可靠,可能值得付出额外的努力

    【讨论】:

    • 总的来说我喜欢 Celery 的想法,但是如果 ops 实用程序不需要响应请求/响应周期中的任何触发器,那么您要做的就是设置并忘记计时器,一个 cron 可以很容易地解决这个问题。虽然在这里建议两者都+1。从到目前为止的 OP 描述来看,该实用程序似乎不会从 django 服务器进程中获得任何真正的好处。
    • 我投票赞成 cron 作业,因为它与视图功能没有特别关联。由于增加了复杂性,我只在必要时才尝试使用芹菜。
    • 是的,两者都很好。如果它只是在后台工作,从用户的角度来看没有任何链接,那么 Celery 肯定是矫枉过正
    • 这个任务永远不会完成。那么我会将它设置为只发生一次吗?或者我会将它设置为每 5 分钟发生一次,然后停止并重新启动它?
    【解决方案2】:

    正如您在评论中发现的那样,celery 并不理想 - 您需要另一个长时间运行的进程来监控现有的长时间运行的进程(您的客户端)。

    理想情况下,您需要一个始终打开的套接字(例如客户端中的无限 while 循环);因此,无论有数据,您都可以“实时”查看网页上的 twitter 提要。

    Node.js 结合SocketIO 旨在解决这个问题,由于 twitter 实时查看器是一种常见的情况,因此很多例子都在浮动 - streamie 就是其中之一。

    这种组合为您提供了一个 javascript 客户端,该客户端会根据即将到来的数据自动更新;不需要刷新、ajax 轮询、cron 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多