Django根据日期时间模型属性安排“一次性”任务

时间:2014-07-10 19:35:35

标签: python django scheduled-tasks celery

Django解决此类问题的最佳解决方案是什么:

我需要根据对象属性值设置一个计划时间来运行"一次"任务,当达到预定时间时。

对于每个属性更新,还必须更新计划时间。

示例(伪代码)

class Runner(models.Model):
    execute_time = models.DateTimeField()

post_save( update_scheduler, sender=Runner)


def update_scheduler(sender, instance, created, **kwargs):
    if created:
        # set schedule time = instance.execute_time
        create_or_update_schedule(instance.datetime)

使用Celery可以做这样的事吗?更新对象更新的计划时间?

1 个答案:

答案 0 :(得分:0)

正如Banana所说,我用eta解决了这个问题。 这是一个简单的示例代码:

task.apply_async([ev_objects], eta=my_eta, task_id=my_task_id)

另外" revoke"可以派上用场来终止尚未开始的任务。它是一个远程控制命令,因此它不能与django数据库解决方案一起使用,只能使用Redis或RabbitMQ。

我仍然searching寻找使用Django数据库撤销任务的解决方案。