I'd like to second this, and perhaps offer a bit of clarification.
1. Poor documentation.
2. Poor uptime compared to commercial services
Everyone and their mother was atwitter over the S3 downtime some time
ago. App Engine regularly has such downtimes. App Engine is a much
more complex system to manage, so that is to be expected somewhat,
still - take that into account. To partially mitigate this, you can
follow a few websites:
cloudstatus.com
http://groups.google.com/group/google-appengine-downtime-notify
Besides that, the platform is great. The quotas are amazingly high
(if you don't hit the high CPU quota). The really great thing is that
App Engine (especially with the django helper) is essentially Django,
so there is little risk in developing for App Engine. If you find
that you can't continue to host your project on App Engine, you can
easily port it over to Django on something like slicehost or AWS.
"http://buddypoke.s3.amazonaws.com/images/install_orkut.jpg"
but app itself, i don't know ... and I don't think it matters
:-D
Hi Feris,
Are you testing it locally, or live? (The datastore can be slow for
puts locally.)
Are you trying to update the same records, or 1000 unique records?
If you are doing 27 updates per second, are you ramping up, and
ramping down your requests when you run tests? Try to simulate a
smooth usage graph, rather than a spikey one.
Have you tried profiling your code live with something like:
import logging
import cProfile, pstats, StringIO
prof = cProfile.Profile()
prof = prof.runctx("self.your_main_function()", globals(),
locals())
stream = StringIO.StringIO()
stats = pstats.Stats(prof, stream=stream)
stats.sort_stats("time") # Or cumulative
stats.print_stats(400) # how many to print
stats.print_callees()
stats.print_callers()
msg = "Profile: \n%s" % stream.getvalue()
logging.info(msg)
What are the 3 fields? Are they indexed?
       Sorry to ask, maybe my question is very stupid but... doesnt't
GAE index *by default* all StringProperties? That means that, despite
not telling it explicitely, these properties are, in fact, indexed ¿?
(simple indexes for individual properties)
> I notice that the fastest in live environment is 27 records/second. Is there
> any good suggestions on how to improve my code ?
       I don't know how to improve that without having profile data,
but 0.03 secs/put seems reasonable to me. I think the way to improve
it is assume that you must focus on scale it for thousand/milions of
users and what matter is not the fact that one of them can do 27 puts
per second, but the fact that *most* of them can do about 27 puts per
second without degrading individual requests performance... That, is:
try to make performance tests emulating concurrent connections, don't
focus on improving individual, sequential puts, unless you know for
sure that they are not working ok (warnings in log files? datastore
timeouts?)
       hope that helps,
       Jose