2012-01-29 74 views
1

我使用Tweepy编写了一个程序,可以在家用电脑上运行该程序来监控Twitter流。 Tweepy这样做的方式基本上是有一段时间(真)循环始终运行。现在我想要做的就是将这个程序链接到我的Django应用程序。我可以这样做的一种方式是将Twitter程序留在本地计算机上,并在接收到消息时更新服务器的数据库。但是,我想知道我需要在服务器的后台运行Twitter程序。我正在使用Django。监控网络服务器上的Twitter流

回答

2

正如您发现您的评论,芹菜并不理想 - 您需要另一个长时间运行的过程来监控现有的长时间运行过程(您的客户端) 。理想情况下,你需要一个总是打开的套接字(比如客户端中的无限while循环);因此,只要有数据,您就可以在网页上获得Twitter Feed的“实时”视图。

Node.jsSocketIO组合被设计为解决该问题,并且由于Twitter的饲料实时查看器是一种常见的情况下,许多实施例是浮动约 - streamie是其中之一。

该组合为您提供一个基于数据即将自动更新的javascript客户端;不需要刷新,ajax轮询,cron等等。

2

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

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

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

+2

我一般喜欢Celery的想法,但是如果ops工具不需要响应请求/响应循环中的任何触发器,并且您要做的所有事情都是设置并忘记了一个计时器,那么cron会轻松解决问题。虽然这里提出了两个建议。从目前的OP描述来看,它似乎并不像django服务器进程中的实际效益那么好。 – jdi 2012-01-30 00:26:33

+2

我的投票是针对cron工作的,因为它并不特别绑定到视图函数。由于增加了复杂性,我只在需要时才尝试使用芹菜。 – 2012-01-30 00:32:19

+0

是的,这两点都不错。如果它只是在后台工作而没有从用户的角度来看任何链接,那么芹菜肯定会过度杀手 – 2012-01-30 00:35:47