Is there a way to atomically run a function as a transaction within google app engine when the function modifies more than five entity groups?
XG transactions are limited to a few entity groups for performance reasons. Running an XG transaction across hundreds of entity groups would be incredibly slow.
Can you break your function up into many sub-functions, one for each entity group? If so, you should have no trouble running them individually, or on the task queue.
I'm developing on google app engine.  The focus of this question is a python function that modifies hundreds of entity groups.  The function takes one string argument.  I want to execute this function as a transaction because there are instances right now when the same function with the same string argument are simultaneously run, resulting in unexpected results.  I want the function to execute in parallel if the string arguments are different, but not if the string arguments are the same, they should be run serially.
Is there a way to run a transaction on a function that modifies so many entity groups?  So far, the only solution I can think of is flipping a database flag for each unique string parameter, and checking for the flag (deferring execution if the flag is set as True).  Is there a more elegant solution?