在Django应用程序中实现代理的最佳方法

时间:2010-12-17 13:05:33

标签: django django-models

我需要的是在后台运行的东西,独立于Web请求,不断检查特定的表并执行一些计算。 “代理人”一词似乎更适合这项任务,但我不确定它是否正确。

关于如何实现这一点的任何想法或想法?我发生的第一件事是cron调用的脚本,但我也不确定......

感谢。

4 个答案:

答案 0 :(得分:3)

现在最流行的方式是使用某种消息队列,使用像Celery这样的帮助程序库。这种方式的工作方式是,您将有许多守护进程在运行,侦听消息队列。在您的应用程序中,您将向队列添加消息,这些消息将由工作人员接收。这非常复杂,但速度非常快。

然而,我觉得你的应用程序完全有点过分。 cron做事方式更简单,更不易碎。它还使您可以更轻松地调试和测试代码。

作为一个异端的注释,如果你的用例确实是“检查一个特定的表并执行一些进入其他表的计算”,你可以使用数据库触发器来完成工作。

答案 1 :(得分:1)

尝试查看Celery

  

Celery是一个基于分布式消息传递的开源异步任务队列/作业队列。它专注于实时操作,但也支持调度。

     

执行单元(称为任务)在一个或多个工作节点上并发执行。任务可以异步(在后台)或同步执行(等到准备好)。

答案 2 :(得分:0)

我会考虑使用Cron tasks,但这取决于是使用Unix还是Windows系统。

Cron任务的主要优点是它只运行一个脚本,无论使用何种语言。所以你可以使用shell脚本,python,php等。

答案 3 :(得分:0)

只是为了提供替代方案,django-command-extensions应用程序提供了一个非常有用的作业系统,特别是如果您有多个要运行的作业。您仍然需要使用cron来触发作业。请参阅docs