我正在谷歌应用引擎上开发。这个问题的重点是一个修改数百个实体组的python函数。该函数采用一个字符串参数。我想将此函数作为事务执行,因为现在有实例同时运行具有相同字符串参数的相同函数,导致意外结果。如果字符串参数不同,我希望函数并行执行,但如果字符串参数相同,则不应该,它们应该串行运行。
有没有办法在修改这么多实体组的函数上运行事务?到目前为止,我能想到的唯一解决方案是为每个唯一的字符串参数翻转数据库标志,并检查标志(如果标志设置为 True,则延迟执行)。有没有更优雅的解决方案?
我正在谷歌应用引擎上开发。这个问题的重点是一个修改数百个实体组的python函数。该函数采用一个字符串参数。我想将此函数作为事务执行,因为现在有实例同时运行具有相同字符串参数的相同函数,导致意外结果。如果字符串参数不同,我希望函数并行执行,但如果字符串参数相同,则不应该,它们应该串行运行。
有没有办法在修改这么多实体组的函数上运行事务?到目前为止,我能想到的唯一解决方案是为每个唯一的字符串参数翻转数据库标志,并检查标志(如果标志设置为 True,则延迟执行)。有没有更优雅的解决方案?
您可以使用任务队列(主要)通过根据参数命名任务来防止重复,因为插入与队列中已有任务同名的任务将失败。阅读此内容了解更多详情:https ://developers.google.com/appengine/docs/python/taskqueue/overview#Task_Names
出于性能原因,XG 事务仅限于少数实体组。跨数百个实体组运行 XG 事务将非常缓慢。
你能把你的功能分解成许多子功能,每个实体组一个吗?如果是这样,您应该可以轻松地单独运行它们,或者在任务队列上运行它们。