Make that January 6th, 2010. :)

- Jason

On Jan 14, 5:30 pm, "Jason (Google)" <apija...@google.com> wrote:
> Last Wednesday, the App Engine team hosted the latest session of its
> bimonthly IRC office hours. A transcript of the session and a summary
> of the topics covered is provided below. The next session will take
> place next Wednesday, January 20th from 9:00-10:00 a.m. PST in the
> #appengine channel on irc.freenode.net.
>
> - Jason
>
> --SUMMARY-----------------------------------------------------------
> - Q: Is there any work underway to speed up the index building
> process? A: Indexes do not take a set amount of time to build; rather,
> the building duration is dependent in part on the amount of traffic
> hitting the cluster and the number of other applications that are
> building indexes during the same period. But we're always making
> optimizations where we can to make it as efficient as possible.
> [7:01-7:02, 7:05-7:07, 7:10-7:11, 7:22, 7:24, 7:26, 7:29-7:30, 7:32]
>
> - Q: What is the best way to do aggregate reporting on App Engine
> data? A: Trying to retrieve and then store all data in memory is not a
> scalable approach -- it may work for small datasets but will increase
> latency and start to fail as the size of the data grows. Ultimately
> App Engine's datastore is not built for this type of data mining. If
> you can't find any reasonable way to split the data into smaller
> chunks which can be processed individually and aggregated using the
> task queue API, you may consider downloading the data using the bulk
> download utility and doing the data mining and report generation on
> your local box. [7:13-7:20]
>
> - Q: What should be done in order to ensure an application performs
> well when it scales from several users to many hundreds or thousands?
> A: If you expect your application to receive a lot of requests, you
> should first perform a load test with the expected amount of traffic
> before deploying; all billing-enabled apps can handle up to 500 QPS
> and you can request higher quota if necessary. You can determine how
> well your application will function by using a load testing utility to
> ramp up traffic from 0 to the expected level and hold this level for a
> period. Inspect your "Number of Quota Denials/Second" graph (should be
> a steady 0) and "Milliseconds/Request" (latency) graph to guage
> whether any changes need to be made before you go live. [7:25-7:27,
> 7:30]
>
> - Q: In lieu of a true multi-tenant solution, what's the best way to
> model data for an application that will be used by multiple clients/
> customers? A: This depends on the specific needs of your customers and
> the size of your application. If you want to use a single application
> ID, you can either separate your kinds by client (e.g.
> Users_customer1, Users_customer2) or just use a single kind (Users)
> with an extra property indicating which client that entity is
> associated with. For larger applications, you may consider deploying a
> new application per client, but first you'll need to request an
> exemption to clause 4.4 of the App Engine TOS using the form 
> athttp://code.google.com/support/bin/request.py?contact_type=AppEngineM....
> [7:32, 7:34-7:35, 7:39-7:40]
>
> - Discussion on HTTPS support for non-appspot.com domains [7:37, 7:39,
> 7:43-7:44]
>
> - Q: What's the best way to extend the list of accepted property
> types, e.g. adding a decimal data type? A: Check these 
> resources:http://googleappengine.blogspot.com/2009/07/writing-custom-property-c...
> andhttp://www.redredred.com.au/money-database-property-for-google-app-en...
> [7:45, 7:49-7:50]
>
> - Q: What kind of write load can App Engine handle? A: You should
> model your data so as to avoid writing to the same entity or entity
> group more than once per second on average, but the write throughput
> to distinct entity groups is high enough that most developers
> shouldn't need to worry. For more on avoiding datastore contention
> which can limit write throughput, 
> seehttp://code.google.com/appengine/articles/scaling/contention.html
> [7:50, 7:52, 7:54-7:55, 7:58, 8:00-8:01]
>
> - Discussion of the "preview release" designation; note that apart
> from the "preview release" status, App Engine has graduated from
> Google Code Labs and thus any kind of formal turndown wouldn't take
> place until 3 years past any deprecation announcement. Therefore,
> should App Engine be deprecated in the future, which isn't planned,
> hosted apps won't suddenly be disabled. [7:50-7:54]
>
> --FULL TRANSCRIPT---------------------------------------------------
> [7:00pm] daskalou: Let's begin...
> [7:01pm] Jason_Google: Hi Everyone. Welcome to the first Chat Time of
> the new year! I'll be here for the next hour to answer any App Engine
> questions.
> [7:01pm] daskalou: Do I have the correct time? Is it 7PM PST now?
> [7:01pm] daskalou: sweet
> [7:01pm] Jason_Google: Yes indeed.
> [7:01pm] daskalou: Q: Any plans on speeding up index building?
> [7:02pm] Jason_Google: Index building is always something we're
> working on, optimizing the work of the index task workers and so
> forth. I don't know of any specific measures being done right now,
> only that optimizations are added every few releases or so that should
> help. What kind of index building delays are you experiencing?
> [7:05pm] daskalou: Currently, I am not, I've just been reading all the
> complaints about it
> [7:06pm] daskalou: Q: Can we get a more defined window of time that an
> app is kept in the app cache?
> [7:06pm] chilts: Jason_Google: you know how Google Labs Short Link
> service has a config page in the Google Apps interface, is there any
> way we can do that with an AppEngine service?
> [7:07pm] chilts: 
> ie.https://www.google.com/a/cpanel/example.org/LabServiceSettings?appId=...
> [7:07pm] Jason_Google: Currently, as far as I know, index building is
> dependent on the size of the data of the apps with indexes also being
> built, so indexes do occasionally take longer to build when larger
> apps are also having their indexes built -- there's only a limited
> number of index workers that run. But like I said, we're continually
> looking into ways of optimizing.
> [7:07pm] ryan_google: daskalou: good q. unfortunately no, not really.
> it depends on overall cluster-wide traffic weather and patterns; it's
> not a fixed period of time.
> [7:08pm] SnapABug: Q: Is there a way using the XMPP service to send
> XMPP  states such as <COMPOSING/>, <PAUSED/>, <INACTIVE/> etc...
> [7:09pm] SnapABug: (using Java)
> [7:09pm] ryan_google: SnapABug: i don't know that there are any xmpp
> experts here, but i expect the answer is no
> [7:10pm] Jason_Google: chilts: I haven't looked into the Google Labs
> Short Link service actually. I need to explore it a bit more before I
> can answer your question fully. But can you go into more detail about
> what you're looking for, e.g. a way of creating short links for App
> Engine apps running on a certain Google Apps domain?
> [7:10pm] Wesley_google: also as i understand it, it's about how many
> "units of work" are required to build your indices, regardless of
> size. if you use up your internal "quota" of resources necessary to
> build all your indices, then it will  "pause" until there is some
> quota available
> [7:10pm] SnapABug: OK. I could only find ways to update the <BODY>.
> That's what I was afraid of.
> [7:10pm] SnapABug: Thanks
> [7:10pm] ryan_google: SnapABug: feel free to file a feature request!
> [7:10pm] SnapABug: Will do.
> [7:10pm] chilts: Jason_Google: yep, I can see that I can configure my
> AppEngine app at but it's only the web address and 
> 'Disable':https://www.google.com/a/cpanel/chilts.org/AppEngineServiceSettings?a...
> [7:11pm] chilts: I was wondering if I can do other config there ...
> e.g. what colour do you want your CSS (or proper admin questions)
> [7:11pm] Wesley_google: this will make it *seem* like it's taking a
> long time to build your indices but in reality, they're paused on
> purpose
> [7:12pm] chilts: for example it has a link to further settings on the
> app itself
> [7:12pm] Jason_Google: chilts: I see. I believe the customization
> options are limited for App Engine apps but this is something we're
> looking to improve significantly in the coming year. Please file a
> feature request for specific options you'd like to see and we'll
> forward those along to the proper teams.
> [7:12pm] stephan__: newbie q: what's the protocol here? ask away, or
> get in line somehow?
> [7:12pm] chilts: hmm, maybe I just do that and have the settings in
> the app itself
> [7:12pm] chilts: Jason_Google: thanks ... I will
> [7:12pm] Jason_Google: stephan__: Ask away!
> [7:13pm] chilts: I guess I meant app config and maybe I just do that
> in the app itself ... thought there was more to the Google Labs ones
> [7:13pm] stephan__: ok then... here's my catch 22 - i need to do
> aggregate reporting on data. queries don't support aggregate clauses,
> so my solution is to pull things into memory and query using josql.
> [7:13pm] Jason_Google: chilts: Currently, I believe you have to do it
> in the app itself, but we may be able to add more options down the
> line, so your specific ideas may help there.
> [7:14pm] chilts: awesome
> [7:14pm] ryan_google: stephan__: the short answer is that the app
> engine datastore isn't designed for reporting, data mining, business
> intelligence, ad hoc queries, etc
> [7:14pm] ryan_google: pulling data into memory will work but only with
> small datasets
> [7:15pm] stephan__: so far so good. but.. (1) because of the 30 second
> limit, i need to do this in batches -- querying the data store in
> sets. but.. (2) sometimes GAE will spin up a new JVM, meaning
> everything i've build up in memory is no longer there, so i have to
> start over.
> [7:15pm] ryan_google: right. basically, don't expect much success with
> that approach.
> [7:15pm] ryan_google: generally we'd encourage you to d/l the data
> with eg. the bulk loader, put it into a data warehouse, and do the
> data mining and reports there
> [7:15pm] stephan__: all i would need, however, is a way to keep a
> user's session sticky to a given jvm
> [7:16pm] ryan_google: right. one approach would be to let users "kick
> off" a report, add a task to a task queue, split up the work into
> manageable chunks, give each chunk to a task, then collect the results
> and compile them and mark the report as ready to view
> [7:17pm] ryan_google: and provide a reports page that shows in
> progress and completed reports
> [7:17pm] stephan__: but i still need for all the data to be in the
> memory of one jvm at some point. if i use task queus, that's a sure
> fire way to cause a lot more jvms to spin up
> [7:18pm] ryan_google: true. again, you'd need to be able to split up
> the data into chunks. if you really can't do that, honestly your only
> option is probably to d/l it all and process it offline.
> [7:18pm] ryan_google: i'd be surprised if you couldn't shard it
> though, mapreduce style
> [7:19pm] ryan_google: btw we're working on support for aggregate data
> processing. it'll be mapreduce style, not sql query style, but it'll
> still be something.
> [7:19pm] stephan__: perhaps. are their any plans to support any sort
> of batch mode where a given process can run for more than 30 seconds?
> [7:19pm] stephan__: i'd pay for this, as i'm sure others would as well
> [7:19pm] ryan_google: that'd help you, but soon after that you'd run
> into the memory limit
> [7:20pm] ryan_google: honestly for most nontrivial datasets, you'll
> hit the limit of memory on a given machine pretty quickly
> [7:20pm] salsakran: ryan: is there a timeframe for map/reduce queries
> on the datastore?
> [7:20pm] ryan_google: even if you use your own machine
> [7:20pm] stephan__: ya, i'm slowly coming to that conclusion,
> unfortunately. disapointing however...
> [7:21pm] ryan_google: salsakran: sorry, no. ETAs for software more
> than, say, 6 months out tend to be kind of meaningless anyway (imho).
> we tend to use agile processes, so we have a rough idea, but nothing
> very precise or far out.
> [7:21pm] salsakran: heh. so > 6 months?
> [7:21pm] Wesley_google: "maybe"
> [7:22pm] ryan_google: salsakran: we don't know.
> [7:22pm] stephan__: fwiw, i'm a product manager at salesforce.com, so
> i understand why these limits need to be enforced to "protect the
> server" for everyone else. still, you should be thinking about some
> kind of server poll for batch operations in a way that wouldn't impact
> other people. as i said, this is something i'm sure people would pay
> for.
> [7:22pm] stephan__: server POOL i meant
> [7:22pm] ryan_google: it's on the roadmap, 
> though,http://code.google.com/appengine/docs/roadmap.html, which is a strong
> sign that we're prioritizing it and hope to get it out soon.
> [7:22pm] daskalou: Wesley_google: re: index building and using up your
> "index building quota" - how big is this quota?
> [7:23pm] salsakran: ryan_google: ahh ... so that's  what "Support for
> mapping operations across datasets" meant
> [7:23pm] ryan_google: stephan: we definitely are! it just sounds like
> it will be a very different model from what you're asking for, where
> you load the entire data set into memory. we make sure that anything
> we build scales, and that doesn't really.
> [7:23pm] Wesley_google: stephan__: can't you do the same thing with
> force.com?
> [7:24pm] Wesley_google: daskalou: this is an internal number that i'm
> not aware of, but just know that there is a built-in limitation in
> there, so if things seem like they're taking too long, they may be
> paused
> [7:24pm] SnapABug: Q: We experienced a lot of Datastore Timeout
> Exceptions impacting our customers today.
> [7:24pm] SnapABug: The status page was at "investigating" earlier but
> is  all green now. Do you have an explanation for the Query latency
> problem?
> [7:25pm] ryan_google: SAB: when?
> [7:25pm] stephan__: haha -- i'm a freaking product manager on the
> platform. i started a contract gig before i started there that i did
> on GAE. interesting, i chose GAE over SF because of portability
> concerns -- i know that if it came to it i could take my java code and
> run it on a rackspace server if need be. SF seemed like lockin. that
> said, i'm now thinking of maybe moving the reporting part to SF, as
> the force.com is a lot more mature in that re
> [7:25pm] salsakran: what's the current protocol for making sure an app
> doesn't get throttled when launched to the public? going from 3-5 devs
> hitting it to opening it up to the masses?
> [7:26pm] 
> ryan_google:http://code.google.com/status/appengine/detail/datastore/2010/01/06#a...
> does show spikes, but occasional spikes that aren't too high or
> widespread do happen
> [7:26pm] ryan_google: salsakran: what do you mean by throttled?
> [7:26pm] SnapABug: ryan_ggole: starting 12 hours ago.
> [7:26pm] daskalou: Wesley_google: If I add 100 new indexes but have an
> empty Datastore, my index building times will still have to "wait in
> line" due to other apps' indexes being built, even though there my app
> has no data in the Datastore?
> [7:27pm] SnapABug: The problem peaked about 4 hours ago.
> [7:27pm] salsakran: ryan_google: hiting quota and/or having requests
> dropped from a sudden spike in traffic
> [7:27pm] ryan_google: SAB: how long did they last?
> [7:27pm] Jason_Google: salsakran: You're more than welcome to run a
> load test before you formally launch your app.
> [7:27pm] ryan_google: ah
> [7:27pm] salsakran: ryan_google: I recall there being reports of this
> before, just wondered what the state of that was
> [7:27pm] SnapABug: most of 9 hours.
> [7:28pm] ryan_google: SAB: i don't have an answer for your app
> specifically. we are working on a few things that will further
> increase datastore isolation, though, which could help with things
> like this
> [7:28pm] ryan_google: do you know roughly what error rate you're
> seeing?
> [7:28pm] SnapABug: You can see it there 
> too:http://code.google.com/status/appengine/detail/datastore/2010/01/06#a...
> [7:29pm] SnapABug: The error is: Uncaught exception from servlet
> com.google.appengine.api.datastore.DatastoreTimeoutException
> [7:29pm] ryan_google: fair enough
> [7:29pm] ryan_google: i don't have an answer right now, but i'll look
> into it
> [7:29pm] Wesley_google: daskalou: i don't believe that your index-
> building has to "wait in line" behind other apps. your building
> requires the same amount of "units of work" regardless of other apps
> [7:29pm] SnapABug: ryan_google: Thank you. It is much appreciated.
> [7:29pm] Wesley_google: if your datastore is empty, i would imagine
> that it shouldn't take long to index your "data"
> [7:30pm] ryan_google: salsakran: load testing is always a good idea.
> also, you generally want to enable billing if you're at all worried
> about quota
> [7:30pm] daskalou: Q: When do you guys expect to release (1) Mapping
> operations support, and (2) Cursor support? (I know they're on the
> roadmap, just wondering "how close" you guys)
> [7:30pm] ryan_google: wes is half right. index building isn't strictly
> a queue, but it is affected by how many other indices are building at
> the same time
> [7:30pm] Jason_Google: salsakran: In general, if you're concerned
> about a high-scale launch, you should a) enable billing for your app
> which automatically increases several key quotas and b) do a load test
> at the projected level of QPS to make sure your latency numbers stay
> reasonable. This has been a model that other apps have followed with
> success in the past.
> [7:30pm] daskalou: are*
> [7:31pm] daskalou: Wesley_google: ok, thanks
> [7:31pm] ryan_google: daskalou: cursors, in either the next release or
> the one after that. mapping, see earlier in the conversation. the
> answer is we don't know.
> [7:31pm] Jason_Google: daskalou: Currently, cursor support is slated
> for the next release. You can see references to it in the Javadocs,
> etc.
> [7:31pm] Jason_Google: Things could always change of course, but it's
> coming up soon.
> [7:31pm] daskalou: when is the "next release"?
> [7:32pm] Wesley_google: yes, ryan, that's what i meant!   jason
> mentioned earlier that there are index "workers" and altho there isn't
> a queue, their number is finite
> [7:32pm] rcopenjr: Hey Guys, I'm new to GAE and appreciate your time
> here.  I have a quick question as I begin to
> [7:32pm] rcopenjr: design models for the datastore (Python).  I'm
> building an application that will host multiple customer
> [7:32pm] rcopenjr: who I will need to be able to store data for.  For
> example I will have a contact model that will
> [7:32pm] rcopenjr: contain person information that will be segregated
> by company - Each company owns their own
> [7:32pm] rcopenjr: data.  QUESTION:  Given performance constraints is
> it better to create separate models for each
> [7:32pm] rcopenjr: new customer, i.e. contact_company1,
> contact_company2, or one contact model with a property
> [7:32pm] rcopenjr: for company?????
> [7:32pm] ryan_google: daskalou: soon, probably within a month, but we
> don't provide exact ETAs for releases
> [7:32pm] salsakran: jason_google: thanks ... that's exactly what I
> wanted to know
> [7:32pm] daskalou: ryan_google: cool
> [7:32pm] Jason_Google: daskalou: Hopefully before the end of the
> month. We're shooting for quick releases (usually at least one per
> month) if you've been following the release history.
> [7:34pm] ryan_google: rcopenjr: we'd need more info. data modelling
> q's tend to be somewhat involved and don't work as well for developer
> chats like these. there are lots of similar discussions on the google
> group, though. you might consider search the archives and/or post
> there.
> [7:34pm] andywocky: rcopenjr: are trying to emulate multiple databases
> on Datastore?  Is that even possible?
> [7:35pm] Jason_Google: rcopenjr: There are several models you can
> follow depending on your goals. For larger applications, you may want
> to have one app ID per customer. For smaller apps, you can get away
> with using one kind per customer or even using a single kind and
> storing the customer's ID as a property which you can query on.
> Segregating the data is easiest when it comes to querying and data
> modeling, but harder for app maintenance.
> [7:36pm] chilts: whilst we're in the thick of the chat, I'd like to
> say thanks to all you Googlers for the BlobStore ... it's awesome ...
> nice and simple
> [7:36pm] chilts: easy to make it work (Python)
> [7:36pm] rcopenjr: Thanks Jason....
> [7:37pm] SnapABug: One last Q: Do you plan on providing a way to
> redirect https traffic from something 
> likehttps://www.snapabug.comtohttps://snapabug.appspot.com?
> [7:37pm] Jason_Google: chilts: Glad you're finding it useful. We'll be
> making it even better in forthcoming releases.
> [7:37pm] SnapABug: (in this case, we already have the CNAMEwww.snapabug.com
> mapped ghs.google.com, but only http is handled)
> [7:37pm] Wesley_google: chilts: glad you're enjoying it!
> [7:37pm] Jason_Google: SnapABug: Hopefully, we'll be able to start
> supporting HTTPS on non-appspot.com domains before it comes to that
> point. For now, you have to manage this redirect yourself.
> [7:39pm] silassewell: Q: I was wondering if there were any plans to
> allow the use of the blobstore via the fetch service?
> [7:39pm] SnapABug: HTTPS support would be awesome.
> [7:39pm] rcopenjr: Jason_Google:  A follow up question - is there a
> determining factor for a large application -
> [7:39pm] SnapABug: Is it on the roadmap?
> [7:39pm] rcopenjr: number of entities, kinds, etc.
> [7:40pm] ryan_google: rcopenjr: determining factor for performance? ie
> latency, scalability, ...?
> [7:40pm] daskalou: Q: Besides for transactions, is there any other
> reason why we should put entities into entity groups?
> [7:40pm] ryan_google: the short answer is no, number of entities and
> kinds generally don't affect performance of individual entities.
> [7:40pm] ryan_google: daskalou: the short answer is no
> [7:40pm] ryan_google: er, sorry, performance of individual
> *operations*
> [7:40pm] rcopenjr: ryan_google: performance
> [7:40pm] rcopenjr: Thanks.....
> [7:42pm] andywocky: Q: I'm confused about the lifecycle of a handler.
> If I map two endpoints in app.yaml, say to handler1.py and
> handler2.py, are those handlers ever persisted in memory or cached?
> For instance, will each handler run (including imports) for each
> request, or less frequently?
> [7:43pm] Jason_Google: SnapABug: Not yet. I'm not close enough to this
> piece to comment with any authority, but I believe that support for
> HTTPS on non-appspot.com domains, when it happens, requires us to take
> advantage of browser support for SNI, so older browsers will
> necessarily be left behind here. This is one reason why we haven't
> enabled this yet -- we're still waiting for broader adoption. But we
> recognize that a lot of developers want this, so we're looking into
> prioritizing it higher.
> [7:44pm] Wesley_google: SAB: here's more regarding what jason was
> saying about non-appspot HTTS support and 
> SNI:http://googleappengine.blogspot.com/2008/10/announcing-https-support-...
> [7:44pm] SnapABug: Jason_Google: Thanks for the detailed answer. Will
> be looking forward for this feature release.
> [7:44pm] Jason_Google: silassewell: Can you elaborate on your request?
> I probably can't confirm one way or the other, but I can follow up for
> you. Also, feel free to file feature requests in the issue tracker so
> other developers can vote them 
> up:http://code.google.com/p/googleappengine/issues/list
> [7:45pm] ryan_google: andywocky: have you 
> readhttp://code.google.com/appengine/docs/python/runtime.html#App_Caching
> ?
> [7:45pm] Wesley_google: (look towards the end of the blogpost)
> [7:45pm] daskalou: Q: What's the best way to handle putting a decimal
> data type into the Datastore?
> [7:46pm] SnapABug: Wesley_Google: OK. Cool.
> [7:46pm] Jason_Google: daskalou: There's actually a thread about this
> in the groups, I believe. Nick Johnson wrote something about it. Let
> me try to find it...
> [7:47pm] silassewell: Jason_Google: I created a reverse proxy which
> sites on app engine. Right now the fetch service and datastore is
> currently limited to 1mb, so allowing fetch to retrieve objects larger
> than 1mb and storing them in the blobstore would be nice (I'm also
> assuming you do some optimizations when serving blobstore objects
> which may be more efficient than datastore + memcache).
> [7:47pm] enigmus_: Q: Are there news 
> onhttp://code.google.com/p/googleappengine/issues/detail?id=2481
> ? "Index inconsistency: queries not returning all results"
> [7:47pm] ryan_google: enigmus: one of my pet projects!
> [7:47pm] ryan_google: we hate that
> [7:48pm] daskalou: Jason_Google: thanks
> [7:48pm] ryan_google: we (the datastore team) have been pushing hard
> on that, and we're making solid progress. i can't say that we've fully
> fixed it, but we think we're close.
> [7:48pm] ryan_google: one thing to note is that we're focusing on
> finding and eliminating the root causes first, since if we just go
> through and fix the data without fixing those bugs, they'll just cause
> more inconsistency
> [7:49pm] ryan_google: but naturally we fully expect to fix both the bug
> (s) and the existing data
> [7:49pm] Jason_Google: daskalou: So far, I've found 
> this:http://googleappengine.blogspot.com/2009/07/writing-custom-property-c...
> [7:49pm] enigmus_: ryan_google: ok, thanks
> [7:49pm] Brandon\wcr: I've been sort of out of it, have cursors been
> implemented yet?
> [7:50pm] Jason_Google: Brandon\wcr: Coming up in the next release or
> two.
> [7:50pm] daskalou: Jason_Google: thanks, I found this 
> too:http://www.redredred.com.au/money-database-property-for-google-app-en...
> [7:50pm] salsakran: what kind of write load into the datastore is
> possible by an app?
> [7:50pm] Jason_Google: daskalou: Yep, that links to the same blog
> post.
> [7:50pm] daskalou: Q: When do you expect GAE to come out of "preview
> release"?
> [7:50pm] daskalou: Jason_Google: lol, cool
> [7:51pm] ryan_google: daskalou: we'd need to define the difference
> between preview and non-preview first.
> [7:51pm] andywocky: ryan_google: thanks for the pointer.  Am I
> interpreting correctly that imports are cached, but that imports for
> each handler (handler1 vs handler2) are independent?
> [7:51pm] andywocky: ... meaning that handler1 has its own namespace,
> separate from handler2?
> [7:51pm] ryan_google: out of curiosity, does it mean something
> specific to you? for example, do you have stakeholders who won't use a
> "preview" product because of that term specifically?
> [7:52pm] daskalou: ryan_google: What do you expect the difference to
> be?
> [7:52pm] Brandon\wcr: Q:  Is there any timeline for task queue quota
> increases?
> [7:52pm] daskalou: ryan_google: Yes, that's pretty much it
> [7:52pm] Jason_Google: salsakran: You can write data pretty quickly,
> but you'll run into problems when you try to write the same entity or
> write to the same entity group too quickly.
> [7:52pm] chilts: Q. one concern of mine is if Google ever decide to
> pull the plug on AppEngine? I guess there are no guarantees this will
> never happen?
> [7:52pm] salsakran: specifically: if we're writing scrobbler type
> application, and split by user_id and shard the counters in question,
> what sort of throughput is reasonable to hope for?
> [7:52pm] chilts: I mean, if we have all these things running on it,
> then it goes away, that'll be sad
> [7:53pm] Jason_Google: Brandon\wcr: Which quotas specifically?
> [7:53pm] daskalou: chilts: Good question
> [7:53pm] Wesley_google: daskalou: your post does point to nick's
> blogpost but the blogger in this case focused on a limitation of using
> strings to store numeric values with and provided his own solution
> [7:53pm] Brandon\wcr: Jason_Google: oops!  nevermind, just saw it was
> increased already to 1mill
> [7:53pm] ryan_google: daskalou: it's basically for managing
> expectations, as you'd expect. re your stakeholders, that's sad. i
> guess i'd encourage you to point them to actual data (status site for
> uptime, over 100k apps and 250k developers, more than 250M pageviews
> per day, apps in the  high 10s of millions of users, etc.)
> [7:54pm] salsakran: do you happen to know what kind of write
> throughput I can expect per entity?
> [7:54pm] Jason_Google: chilts: App Engine isn't in labs, so we do have
> a formal policy in place to support all apps running on it for a
> certain period, 3 years I think, from any announcement of deprecation,
> which isn't planned.
> [7:54pm] ryan_google: chilts: naturally we don't expect that. you're
> right though that it's a risk with almost anything you use that's run
> by someone else.
> [7:54pm] ryan_google: aha, jason has a much more specific answer.
> ignore me.
> [7:54pm] chilts: awesome
> [7:54pm] chilts: 3yrs sounds plenty in that event
> [7:55pm] ryan_google: salsakran: one answer is, don't expect more than
> 1-10qps of writes per entity group
> [7:55pm] chilts: it's good to know these things, esp. if you base a
> business around someone elses
> [7:55pm] ryan_google: definitely!
> [7:55pm] daskalou: Wesley_google and ryan_google: thanks
> [7:56pm] ryan_google: np! glad to help
> [7:56pm] Wesley_google: same here... glad to help users out!!
> [7:56pm] andywocky: ryan_google: is my assumption about cached imports
> in handlers correct?
> [7:56pm] chilts: yeah, thanks guys (I figure these chats take it out
> of you and make you tired)
> [7:56pm] SnapABug: Yep. Thank you guys!
> [7:56pm] ryan_google: andywocky: right, sorry. i'm not an expert on
> the python runtime so i'm thinking about it.
> [7:56pm] Wesley_google: i'm also open to taking any Python-specific
> questions too for those of you who are newbies
> [7:57pm] daskalou: Yeah Python newbie here
> [7:57pm] daskalou: Wesley_google: Do you have experience with AEP?
> [7:57pm] Wesley_google: speaking of which, today is the last day for
> earlybird registration to the largest Python conference in the world
> happening next month in ATL
> [7:57pm] chilts: Wesley_google: I had an interesting one the other day
> with BlobStore ... but I think that might be a question for the group
> (since I'll need a few points to describe it)
> [7:57pm] ryan_google: andywocky: when you say independent namespaces,
> do you mean that the global vars are kept separate?
> [7:58pm] Wesley_google: daskalou: nope... what's AEP?
> [7:58pm] ryan_google: actually, regardless, it's probably over my
> head. wesley might know, otherwise you could try the google-appengine-
> python group
> [7:58pm] Jason_Google: salsakran: Did Ryan answer your question?
> Writing a lot of data isn't a problem, only when you're writing too
> much to the same entity group.Some strategies about how to avoid 
> this:http://code.google.com/appengine/articles/scaling/contention.html
> [7:58pm] salsakran: jason_google: yeah ... the 1-10 q/s was a useful
> number
> [7:58pm] Wesley_google: andywocky: each handler has its own namespace,
> just like independent modules in "regular" Python
> [7:59pm] andywocky: wesley_google: thanks!
> [7:59pm] Wesley_google: sure
> [7:59pm] daskalou: Wesley_google: app-engine-patch - Django with
> support for admin and other things the built in Django doesn't support
> [7:59pm] chilts: Jason_Google: so my thoughts there are, if I have
> maybe 100 entities (no particular entity group), writing them all
> should be no problem (even if they land on the same datastore server)?
> [7:59pm] Wesley_google: ah, i figured as much
> [8:00pm] Jason_Google: salsakran: Yeah, it varies, but you will likely
> see some level of timeouts if you start writing more than 1 QPS to a
> given entity group with any consistency. For that reason, we recommend
> you keep your entities as small as possible and for items like
> counters where you expect to update every request, you can shard your
> data using a technique mentioned in that article.
> [8:00pm] chilts: this is a theoretical thought (I don't have 100
> entities to write)
> [8:00pm] Wesley_google: unfortunately when i worked on the Django book
> back in 2008, only the Django Helper for App Engine was out. AEP just
> came out when our book was published, so i didn't get a chance to
> experiment with it
> [8:00pm] daskalou: Wesley_google: Re: my thread on the 
> groups:http://groups.google.com/group/google-appengine/browse_thread/thread/...
> Do you know if it's difficult to "share" models between the two
> frameworks?
> [8:01pm] Jason_Google: chilts: Yes, this is right. There does come a
> point (e.g. several thousand QPS) when there are other considerations,
> but in general, you should be able to write many entities in separate
> entity groups in parallel.
> [8:01pm] chilts: sweet
> [8:02pm] chilts: I must admit, sometimes I wonder about how much
> hardware you guys have there, and whilst you might not be at liberty
> to say, a blog post would be awesome (how many memcache instances,
> datastore servers, frontends etc)
> [8:02pm] chilts: would make an interesting post
> [8:02pm] Wesley_google: daskalou: yes, i think i skimmed your post. i
> don't know the answer but my intuition is that it isn't cached
> [8:02pm] Wesley_google: or rather, shared
> [8:03pm] daskalou: Wesley_google: oh... damn
> [8:03pm] Jason_Google: Alright then, the office hour is officially
> over. Feel free to keep the discussion going though. We'll be back in
> two weeks, Wednesday, January 20th, from 9:00 to 10:00 a.m. PST, and
> I'll post a transcript of this session to the groups as soon as I can.
> Thanks for the company.
> [8:03pm] ryan_google: chilts: agreed! it's actually probably a lot
> smaller than you think...but still, yeah, don't hold your breath.
> [8:03pm] chilts: thanks Jason_Google
> [8:03pm] chilts: ryan_google: heh, awesome
> [8:03pm] chilts: but interesting
-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.


Reply via email to