Happy Holidays from the App Engine team - 1.4.0 SDK released
googleappengine.blogspot.com
googleappengine.blogspot.com
Another huge item: up to 10 minutes of background processing on a single task queue callback:
No more 30-second limit for background work - With this release,
we’ve significantly raised this limit for offline requests from
Task Queue and Cron: you can now run for up to 10 minutes without
interruption.
Make sure you turn on the new warmup handlers for your applications too. With this, AppEngine will deliver a request to /_ah/warmup and let it complete before serving traffic from a new instance.XML:
<inbound-services>
<service>warmup</service>
</inbound-services>
YAML: inbound_services:
- warmupNow we only need SSL support and here we come, blasting everyone away who wastes time on maintaining his own servers. :P Well, at least until the next feature is needed, but not available, so let's hope this won't be the case. ;)
Note that the increase in the deadline to 10 minutes only affects background tasks (ie, the Task Queue and Cron jobs). It's important, but won't fix those DeadlineExceededError on a user-facing page errors on it's own.
I'd imagine that the "warmup request" thing is especially useful for avoiding this.
AppEngine pricing is quite complex. You need to look at the (very generous) free quotes first (http://code.google.com/appengine/docs/quotas.html#Resources), and then look at the pricing (http://code.google.com/appengine/docs/billing.html#Billable_...)
Unless you have a very CPU-heavy application it's unlikely AppEngine will ever cost more than Heroku. 8 times at much seems a lot, but 5 times as much wouldn't surprise me.
Any server-bound data must be sent through a REST interface, and the corresponding state retrieved through memcache or a DB request. To track connections, the client must periodically send notifications to the server to keep it alive: "If the application needs to keep track of which clients are connected, one solution is to set the socket’s onopen property to call a function designed to send a POST message to the server at some regular interval in order to notify the server of the client's state."
Awesome!
* Now please let us use naked domains, I badly need it for my startup, I hate www to death.
I don't disagree, I would like to have it. Also SSL for my domain without having to use appspot.com. But I'd put SSL as a much higher priority.
* Not that I am working on one, just that you never know the poster intentions.
I hate the www thing too. The explanation is that you cannot have a cname on a root domain. They coud get around e problem by just hosting dns for you themselves.
The other issue is that you end up having t have yet another service to redirect dom.ain to www.dom.ain as well. Sometimes dns providers will do this, but not always. (Dotster doesn't do the right thing, for example.)
Is it possible to work around the reported reliability issues? After all, what good is scalability without reliability?
I did a quick !hn search for you[1] and saw these three popular submissions:
http://news.ycombinator.com/item?id=1934563
http://news.ycombinator.com/item?id=1931456
http://news.ycombinator.com/item?id=1927903
The general impression, as I've understood it so far, is that App Engine has its limitations, but Google makes you well aware of them, so adapt to them and don't get frustrated or surprised by them two months into development, or host your service somewhere else like AWS.
[1]: http://searchyc.com/submissions/app+engine?page=1&sort=b...
Our service (getmetricmail.com) which is running on GAE had an uptime of 99.97% in November.
Now, if only we could have SSL...
I haven't found the cold start or 30-second limit a problem yet. I have a cron job running periodically hitting the app to schedule tasks, that seems to always keep an instance running. The tasks were designed to do small things and finished in a short time. That actually helps to spread the tasks to more machines.
It does seem App Engine is running faster in the last week or so; it was kind of slow before. The new Play Back feature in my app http://www.previouslook.com actually works without much hiccup now.
After writing a whole lot of scripts to do this myself, I'd been thinking this was a great market too.
Are you doing multiple Solr cores per JVM or does everyone get their own JVM?
Sigh... this reduces the awesomeness quite a bit :|
The developer who uploaded an app version can download that
version's code using the appcfg.py download_app command.
This feature can be disabled on a per application basis in
the admin console, under the 'Permissions' tab. Once
disabled, code download for the application CANNOT be re-
enabled.
This sounds awesome too.(source: http://code.google.com/p/googleappengine/wiki/SdkReleaseNote...)
Error 403: --- begin server output ---
You do not have permission to download this app version.
even though I am the only developer. I wonder if this applies to downloading apps uploaded by this version. $ appcfg.py download_app -A <app_id> <some_folder>
If it doesn't ask for credentials, you should probably add the --no_cookies flag.Now if they could just put node on there!
In fact the new limits only seem to apply to these types of requests — not user facing requests.
http://code.google.com/appengine/docs/python/taskqueue/overv...
http://www.google.com/events/io/2010/sessions/building-real-...
and here's the sample app (java):