Google app engine 管理多租户应用程序中的任务队列-GAE

Google app engine 管理多租户应用程序中的任务队列-GAE,google-app-engine,multi-tenant,task-queue,Google App Engine,Multi Tenant,Task Queue,我必须在AppEngine上的多租户环境中实现重复任务。真正的用例是“实现定期发票” 我怀疑有3种方法,从按名称空间集中管理到分散,再到按计划任务分散。寻求反馈 集中管理:有一个“主任务队列”或cron作业,定期检查必须执行哪些命名空间作业,然后启动它们。按命名空间查找要完成的任务 每个名称空间的分散性:每个名称空间都有一个任务或cron作业,定期检查它所属的名称空间需要执行的操作 按任务分散:在命名空间中创建新作业时,立即在将来的所需时间点为该任务安排任务队列。没有“管理”任务队列 我就每

我必须在AppEngine上的多租户环境中实现重复任务。真正的用例是“实现定期发票”

我怀疑有3种方法,从按名称空间集中管理到分散,再到按计划任务分散。寻求反馈

  • 集中管理:有一个“主任务队列”或cron作业,定期检查必须执行哪些命名空间作业,然后启动它们。按命名空间查找要完成的任务

  • 每个名称空间的分散性:每个名称空间都有一个任务或cron作业,定期检查它所属的名称空间需要执行的操作

  • 按任务分散:在命名空间中创建新作业时,立即在将来的所需时间点为该任务安排任务队列。没有“管理”任务队列

我就每种方法向自己提出问题:

  • 集中管理:CONTRA->不可扩展,它需要迭代所有“客户”名称空间。PRO->更容易管理/控制正在发生的事情

  • 按名称空间分散:两全其美

  • 每个任务的分散性:PRO->可扩展性好,无管理开销;CONTRA->当版本升级时会发生什么,如果出现错误并且计划不能正常工作,您必须纠正。。。听起来像是噩梦。如果调度失败怎么办?我可以有一个100%的garantuee,一年后计划的任务将被执行吗


是否有人有好的建议/经验?

一年后您可能没有该客户,或者条款可能会更改,等等,更不用说所有的技术挑战了。未来方法中的时间表将不起作用

我看不出其他两种方法之间有什么区别,除非你有数百万的名称空间


我不知道你是怎么储存数据的。您是否考虑创建一个独立于命名空间的单独的表/实体来进行发票?在那里插入一条记录,类似于“未来”方法,并创建一个cron作业,每天/每周/每月检查一次该表。如果您删除了客户或更新了条款,您也会在那时更新此表。

小的后续问题:我不能通过名称空间进行事务处理,对吗?因此,在全局命名空间中标记记录循环和保存簿记记录不能在事务中完成?!看看这段代码:您可以使用类似的方法:更新所选名称空间中的实体,并创建一个任务来更新全局名称空间。如果此过程失败,请向管理员发送消息。它可能永远不会发生,但只是以防万一。