每隔一段时间运行特定的django manage.py命令

时间:2014-10-21 13:14:06

标签: python django django-chronograph

我需要每隔X分钟在EC2实例上运行一个特定的manage.py命令。例如:python manage.py some_command

我查了django-chronograph。按照说明操作,我已将chronograph添加到我的settings.py,但在runserver上,它一直告诉我No module named chronograph

我有什么东西可以让你无法运行吗?运行后如何使用计时码表运行manage.py命令?

编辑:它已安装在EC2实例的virtualenv中。

3 个答案:

答案 0 :(得分:1)

我建议您配置cron以在特定时间/间隔运行命令。

答案 1 :(得分:0)

首先,运行pip install django-chronograph安装它。

答案 2 :(得分:0)

我会说通过交叉处理这个,但是如果你不想使用交叉那么: 确保您在virtualenv中安装了该模块(使用easy_install,pip或Amazon EC2允许的任何其他方式)。之后,您可能需要查找线程模块文档:

Python 2 threading module documentation

Python 3 threading module documentation

使用线程的目的是具有以下结构:

“控制”线程,它将使用计时码表模块并进行时间测量,并在每个预定时间将新工作放在“输入队列”中,用于工作线程(已经激活)处理,或者只是在您想要触发每次执行时触发每个工作线程(使其处于活动状态)。
在第一种情况下,您将利用并行线程来完成大量工作并最小化等待时间,但由于工作在队列中,工作人员将一次处理一个。这意味着如果您将两个事物安排得太近并且前一个元素仍在处理中,那么新项目将不得不等待(根据您的编程逻辑和工作线程数量,一些工作人员可能会开始处理新项目,但是更多一些复杂的逻辑) 在第二种情况下,每次要触发计划的操作时,控制线程实际上会触发新线程(或线程组)的启动。如果要处理的是大数据,则可能需要为每个任务生成一个新队列来处理并为每个任务创建一组工作线程,但如果数据不是那么大,那么你可以放弃让工人只处理一个数据包,并在执行完成后完成并得到结果。无论哪种方式,此方法都允许您安排任务,而不限制它们的接近程度,因为每次都会为它们创建新的独立工作线程。

最后,您可能希望创建一个“输出队列”并输出线程,以存储和处理(或输出或其他任何您想要用它做的事情......)每个工作线程的结果。

控制线程基本上会尝试模仿其逻辑中的cron,在某些时间触发操作,具体取决于它的配置方式。
python中还有一个多处理模块,它将与流程一起使用并利用真正的多处理硬件,但我不认为在这种情况下你真的需要它,除非你看到由cpu性能引起的性能问题。

如果您需要任何澄清,帮助,示例,请告诉我。