Django 根据日期时间模型属性调度"one time"任务



在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)

是否有可能使用芹菜做这样的事情?对象更新时的更新计划时间?

根据Banana的建议,我使用eta解决了这个问题。下面是一个简单的示例代码:

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

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

我还在寻找一个解决方案,撤销使用Django数据库的任务。

最新更新