Celery 运行 只在给定的时间范围内执行任务

Celery run task only in a given time range

仅在指定时间范围内(假设仅在晚上 10 点到早上 8 点)运行 Celery 任务的最佳方法是什么?没有新任务应该 运行 在该时间范围之外(这是必须的)。我能想到的一个可能的选择是在任务开始时检查时间,如果不在范围内,则提出 self.retry 并提供 eta 以在另一个时间重新安排它。

这是最好的方法还是有更好的选择?

Celery 不提供该功能out-of-box。我认为你的计划很好(测试任务是否在正确的时间执行,如果不是 re-schedule 本身)。