我经常有一些模型是某些远程资源的本地副本,需要定期保持同步。每个实体的定期任务
Task(
url="/keep_in_sync",
params={'entity_id':entity_id},
name="sync-%s" % entity_id,
countdown=3600
).add()
里面keep_in_sync任何更改都保存到模型和一个新的任务安排在稍后再次发生。
现在,虽然表面上看起来这是一个很好的解决方案,但在实践中,如果所有必要的任务都真的添加了,您可能会担心。也许你有仓库笼子里的食物颗粒水平的实体,以便自动发送电子邮件给你的管家喂它们。但几周后,当你从假期回来时,你会发现你的几个仓鼠挨饿。
然后,它开始看起来像一个好主意,使一个脚本,通过每个实体,并确保适当的任务真的在队列中。但是Task和Queue类都没有任何方法来检查任务是否存在。
您可以拯救仓鼠,并想出一个更好的方法来确保每个实体周期性地调用真正的方法吗?
更新
看来,如果你想成为真正确保任务计划,你需要保持自己的任务跟踪尼克·约翰逊建议。没有准备好放弃方便的任务队列,所以暂时只会容忍无法检查任务是否真正安排的不确定性。
+1为仓鼠隐喻:) – Xion