我必须在AppEngine上的多租户环境中实现重复任务。真正的用例是“实施定期发票”。
我怀疑3种方法,从集中管理到分散每个命名空间到分散的每个计划任务。寻求反馈。
集中管理:有一个“主任务队列”或cron作业,定期检查必须执行哪些命名空间作业,然后将其关闭。每个命名空间查找要完成的任务。
按命名空间分散:每个命名空间都有一个任务或cron作业,定期检查它所属的命名空间。
按任务分散:在命名空间中创建新作业时,请立即在将来的所需位置为该任务计划任务队列。没有“管理”任务队列。
我在为每种方法提出问题:
集中管理:CONTRA - >不扩展,它需要迭代所有“客户”命名空间。 PRO - >更容易管理/控制正在发生的事情。
按名称空间分散:两全其美?
按任务分散:PRO - >规模好,没有管理费用; CONTRA - >什么时候版本升级,如果有一个错误和调度不能正常工作,你必须纠正...听起来像一场噩梦。如果调度失败怎么办?我可以100%保证从现在开始计划一年的任务能够得到解决吗?
那里有人有好的建议/经验吗?
答案 0 :(得分:0)
您可能在一年后没有该客户,或者条款可能会发生变化等,更不用说所有的技术挑战了。未来方法的时间表不起作用。
除非你有数百万的名字空间,否则我看不出其他两种方法之间的区别。
我不知道您如何存储数据。您是否考虑过创建一个单独的表/实体来开发票,而不依赖于命名空间?你在那里插入一条记录,类似于你的" future"方法,并创建一个cron作业,每天/每周/每月检查一次这个表。如果您删除客户或更新条款,那么您当时也会更新此表。