0

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

我已经抬头了django-chronograph。按照说明,我已添加chronograph到我的 settings.py 但runserver它一直告诉我No module named chronograph

有什么我想运行的吗?运行后如何获取manage.py命令以使用计时码表运行?

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

4

3 回答 3

1

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

于 2014-10-21T13:20:14.580 回答
0

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

于 2014-10-21T13:43:18.423 回答
0

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

Python 2 线程模块文档

Python 3 线程模块文档

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

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

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

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

如果您需要任何说明、帮助、示例,请告诉我。

于 2014-10-21T13:51:08.923 回答