在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数据库的任务。