Thank you!

"nothing is preventing you from using memcache in this way in web2py.  you 
could port the get_profile() method to web2py with no problem"

This is a great relief. Actually what is the downside using pure GAE vs. 
web2py? What will be missing? 

And I suppose I have just to import the appengine libraries as usual and 
begin to define the model, etc? 

Are there any code where this is already done? 

I will spend a time with Eclipse debugger to understand it better when I am 
able to run it. I am running it at localhost:8080, the breakpoint comes 
to gaehandler.wsgiapp, I am placing a breakpoint on my app code but the 
debugger does not stops there.

"side question - how do you keep your counter up to date without having 
write contention on the object?  (i'm using sharded counters for some 
things, but i don't like them)"

Sharded counters seems too complicated and since counting is an essential 
function I decided early to increase/descrease when addind/deleting on the 
spot. Because it is a hierarchical structure when I put the code in a 
transaction I guarantee its update is valid for this branch of the tree. 
GAE keeps track for the rest. When there is a contention GAE tries several 
more times until success. Most of the time I do that in a deferred process 
and this is configurable - how often to try again, how long to wait till 
next try, basically it is an exponential back off - it is 
very sophisticated mechanism on which Google worked a lot of time on to 
perfect it. 

Another consideration for hierarchical structure is HRD requires it. So 
this is essential.

I watched the logs and this happened several times, the deferred process 
keeps trying till there is a success.

This is one of the reasons I keep staying with pure GAE - you cannot 
achieve a scale without it and it is related to Google infrastructure, 
nothing else.

Reply via email to