Django 监视Web服务器上的Twitter流

Django 监视Web服务器上的Twitter流,django,twitter,tweepy,Django,Twitter,Tweepy,我用Tweepy编写了一个程序,我可以在家里的电脑上运行它来监控Twitter流。Tweepy这样做的方式基本上是让whiletrue循环始终运行。现在我想做的是将这个程序链接到我的Django应用程序。我可以这样做的一种方法是将Twitter程序留在本地计算机上,让它在收到消息时更新服务器的数据库。然而,我想知道我需要做什么在我的服务器上后台运行Twitter程序。我用的是Django 您可以使用一个任务队列,它可以在后台执行任务,即请求/响应周期之外的任务。它还与django集成 您可以将其

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

您可以使用一个任务队列,它可以在后台执行任务,即请求/响应周期之外的任务。它还与django集成

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

如果您不想遇到这样的麻烦,您也可以使用Cron每隔X分钟执行一次操作,或者使用简化的队列应用程序。这就是说,芹菜经过了很好的测试和可靠,可能值得您付出额外的努力,这是一个任务队列,可以在后台执行任务,即在请求/响应周期之外。它还与django集成

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


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

正如您在评论中发现的那样,芹菜并不理想-您需要另一个长时间运行的流程来监控您的客户机现有的长时间运行的流程

理想情况下,您需要一个始终像客户端中的无限while循环一样打开的套接字;因此,无论何时有数据,您都可以在网页上实时查看推特提要

与的结合就是为了解决这个问题,而且由于twitter提要实时查看器是一种常见的情况,所以很多例子都是浮动的——这就是其中之一


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

正如您在评论中发现的,芹菜并不理想-您需要另一个长时间运行的流程来监控您的客户机现有的长时间运行的流程

理想情况下,您需要一个始终像客户端中的无限while循环一样打开的套接字;因此,无论何时有数据,您都可以在网页上实时查看推特提要

与的结合就是为了解决这个问题,而且由于twitter提要实时查看器是一种常见的情况,所以很多例子都是浮动的——这就是其中之一


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

一般来说,我喜欢芹菜的想法,但是如果ops实用程序不需要响应请求/响应周期中的任何触发器,并且您要做的就是设置并忘记计时器,那么cron将很容易解决这个问题。虽然这里建议两者都是+1。到目前为止,从OPs的描述来看,该实用程序似乎没有从django服务器进程中获得任何真正的好处。我投票支持cron作业,因为它没有特别绑定到视图函数。我只在必要的时候才尝试用芹菜,这是因为芹菜的复杂性。是的,两者都有好处。如果它只是在后台工作,从用户的角度看没有任何链接,那么芹菜肯定会被过度使用,尽管这项任务永远不会完成。那么我会设定它只发生一次吗?或者我会将它设置为每5分钟发生一次,停止并重新启动它吗?我通常喜欢芹菜的想法,但是如果ops实用程序不需要响应请求/响应周期中的任何触发器,并且您要做的就是设置并忘记计时器,那么cron将很容易解决这个问题。虽然这里建议两者都是+1。到目前为止,从OPs的描述来看,该实用程序似乎没有从django服务器进程中获得任何真正的好处。我投票支持cron作业,因为它没有特别绑定到视图函数。我只在必要的时候才尝试用芹菜,这是因为芹菜的复杂性。是的,两者都有好处。如果它只是在后台工作,从用户的角度看没有任何链接,那么芹菜肯定会被过度使用,尽管这项任务永远不会完成。那么我会设定它只发生一次吗?或者我会将它设置为每5分钟发生一次,然后停止并重新启动它 ?