【发布时间】:2016-05-11 20:43:17
【问题描述】:
我有一个 celery 任务是内存密集型的,我希望它在大部分时间都处于关闭状态的昂贵 AWS 服务器上运行。
celery beat 会每天安排一次任务,但也可以通过网络应用程序 (== django) 手动安排。
调度任务就是向兔子队列发送消息。
然后我想使用 AWS api 发出一个命令来打开我昂贵的服务器,并让它启动工作人员, 在没有更多任务后等待它们死亡,然后关闭(并节省一些钱,因为服务器已关闭)。
我知道如何编写 AWS 脚本来打开我的服务器。问题是:如何告诉 celery 运行任务直到队列为空然后死亡?
有没有我可以给它的命令参数,还是我需要为此想出一些技巧?
【问题讨论】:
-
为什么要通过 Celery 来做这件事?为什么不直接启动昂贵的进程并让它在完成后简单地退出?
-
任务可能需要一段时间才能运行。当它正在运行一个运行另一个类似任务的请求时,可能会进来。它需要排队。
-
明确一点:这里的目的是在不再需要服务器后关闭服务器(在 AWS 中省钱)
标签: django amazon-web-services celery django-celery