我需要每X分钟在EC2实例上运行特定的manage.py命令。例如:python manage.py some_command。
我查过django-chronograph了。
我是不是遗漏了什么让它运行起来?在运行之后,我如何让manage.py命令使用计时器运行?
编辑:安装在EC2实例的virtualenv中。
发布于 2014-10-21 21:20:15
我建议您将cron配置为在特定的时间/间隔运行命令。
发布于 2014-10-21 21:43:18
首先,通过运行pip install django-chronograph安装它。
发布于 2014-10-21 21:51:09
我会说通过EC2来处理这个问题,但是如果你不想使用cross,那么:确保你在虚拟环境中安装了这个模块(使用easy_install、pip或任何其他亚马逊cross允许的方式)。在此之后,您可能需要查找线程模块文档:
Python 2 threading module documentation
Python 3 threading module documentation
使用线程的目的是为了具有以下结构:
一个“控制”线程,它将使用计时器模块并进行时间测量,并在每个预定时间将新工作放入“输入队列”中,以便工作线程(已经处于活动状态)进行处理,或者在您想要触发每次执行时触发每个工作线程(使其处于活动状态)。
在第一种情况下,您将利用并行线程来完成大量工作,并最大限度地减少io等待时间,但由于工作在队列中,因此工作线程将一次处理一个。这意味着如果您将两件事安排得太近,而前一个元素仍在处理中,则新的项将不得不等待(取决于您的编程逻辑和工作线程的数量,一些工作线程可能会开始处理新的项,但逻辑会更复杂一些)。
在第二种情况下,每当您想要触发一个预定的操作时,您的控制线程实际上都会触发一个新线程(或一组线程)的启动。如果有大数据要处理,您可能需要为每个要处理的任务派生一个新队列,并为每个任务创建一组工作线程,但是如果数据不是那么大,那么您可以让工作进程只处理一个数据包,并在执行完成并获得结果后完成。无论哪种方式,此方法都将允许您调度任务,而不会限制它们之间的距离,因为每次都会为它们创建新的独立工作线程。
最后,您可能想要创建一个“输出队列”和输出线程,以存储和处理(或输出,或任何其他您想用它来做的事情……)每个工作线程的结果。
控制线程基本上是试图在其逻辑中模仿cron,根据其配置方式在特定时间触发操作。
在python中还有一个多处理模块,它将与进程一起工作,并利用真正的多处理硬件,但我认为在这种情况下你不会真的需要它,除非你看到cpu性能导致的性能问题。
如果你需要任何澄清,帮助,例子,请让我知道。
https://stackoverflow.com/questions/26487648
复制相似问题