16:02 < scudder_google> Hi all, I'd like to start another installment
of App Engine chat time, where Google engineers are on hand to answer
your questions and listen to concerns
16:03 < nickjohnson> *tumbleweed*
16:03 < knoonan> Hi guys, for Ruby on App Engine, I think it would be
very useful to have a page with a whitelist of gems (and plugins for
Rails) which have been found to work on GAE/J.
16:05 < maxr_google> That sounds useful.  I think I see ribrdb logged
in here.
16:05 < scudder_google> knoonan: interesting idea, the best way to
start might be to create your own list somewhere and allow others to
collaborate with you on it
16:05 < maxr_google> He's done a lot of the GAE Ruby work.
16:05 < nickjohnson> knoonan: That seems like a good idea, but
probably best on the appengine-jruby wiki?
16:05 < Wooble> Is there any truth to the rumor that henceforth people
spamming the main GAE google group with requests to activate their
Java accounts will be redirected to the Java group and moved to the
back of the queue to be
               activated?
16:06 < bmckinlay> I have an issue with URLFetch on Java. My
application contacts a web service that sometimes needs more time to
respond to my queries than the ~4.5 seconds that app engine allows. In
the Python SDK, there is an
                  option to increase this limit. Any possibility of a
similar option being added in Java?
16:06 < nickjohnson> Wooble: If there is, nobody's told me. ;)
16:06 < knoonan> Thanks guys, the App Engine JRuby wiki sounds like
the place.
16:06 < schwardo_google> bmckinlay: it's definitely something that we
plan to support.  do you know if it's been filed in the issue tracker
yet?
16:07 < ribrdb> only a couple of people can edit the wiki right now
though.
16:07 < bmckinlay> schwardo_google: yes...
http://code.google.com/p/googleappengine/issues/detail?id=1559
16:07 < ribrdb> knoonan: do you know of a list of gems anywhere that
do or do not work?
16:08 < knoonan> @ribrdb No, I don't know of an existing list. That's
why I think it's time to start one...!
16:08 < schwardo_google> bmckinlay: ok great, i'll accept it to
indicate that it's something we plan to support, and we'll rely on the
# of stars to help prioritize it
16:09 < knoonan> ((I did a lightning talk at the Euruko conference in
Barcelona, Spain, on May 10th, about App Engine. I hope I got some
Rubyists interested.)
16:09 < bmckinlay> schwardo_google: thanks! This would be very useful
to me.
16:10 < drawlabs> any plan for monthly pricing?  Sometimes I wish I
could over pay on slow months with the insurance of not breaking too
high into billing on large months. or is this just a dev chat?
16:10 < brett-google> fine to talk about billing too, of course
16:11 < brett-google> we've heard that request from other people, too;
definitely considering that option going forward
16:11 < mcxx> how's the XMPP API going? for me, that's the feature I'm
looking forward to most
16:11 < brett-google> drawlabs: one question is, do you mean you want
your budget to carry over, or your actual payment?
16:12 < brett-google> mcxx: going good. =) nothing to announce but it
should be soon according to the roadmap
16:12 < drawlabs> thanks, yes more like an insurance cloud.  Every
indie developer I know is scared of the cloud on that high end one day
or process that ends up costing a few grand.
16:12 < drawlabs> monthly, no carry over to make it economical
16:12 < brett-google> hrm
16:12 < brett-google> yeah because right now when you set your budget
that's a maximum spend, it's not an actual paid amount
16:12 < mcxx> brett-google: superb :)
16:12 < brett-google> so you can at any time raise your budget to fit
a big day
16:13 < brett-google> but then the next day drop your budget again in
case you're worried about costs
16:13 < brett-google> does that make sense? i'm confused about how
they're scared about one day costing a few grand
16:13 < drawlabs> true, but what I am saying is some part of big days
would be shared cost because people pay like an insurance for that.
16:13 < brett-google> ah okay so this is more getting into 95%-like
billing
16:13 < brett-google> where you don't have ot pay for extreme peaks
16:14 < drawlabs> yep
16:14 < nickjohnson> It sounds like you're asking for "slashdot
insurance"? :)
16:14 < drawlabs> hehe yes
16:14 < brett-google> well traditional hosting providers effectively
have that, nick, with 95% metered billing
16:14 < nickjohnson> right
16:15 < drawlabs> I know it would be useful for some people that have
had fears, so they stay at trad hosting for that.
16:15 < brett-google> in my personal opinion, though 95% can help with
peaks in some cases, it's actually bad for customers because it
overcharges the rest of the time
16:15 < brett-google> if you have a single 95% peak, then you're
billed at that level for the whole month
16:15 < brett-google> even if your average is zero
16:15 < brett-google> so our current billing model lets you change
your budget on a daily basis depending on your current needs
16:15 < drawlabs> true, it might be one way to get people though, I
know it would help me moving people onto it.
16:15 < Wooble> For a service where the cost varies so much depending
on what your app does, I can't imagine how you'd begin to even
calculate the monthly costs to charge...
16:16 < brett-google> yeah that's a fair point
16:16 < drawlabs> I think what you have is good or better than most,
sry to overtake with billing
16:16 < rogerh> are there any plans to allow access to the timestamped
fields inside bigtable?
16:16 < brett-google> wooble: indeed it's a complex idea
16:16 < brett-google> drawlabs: well i worked on billing so i'm happy
to talk about it =)
16:16 < brett-google> rogerh: of previous cell version snapshots?
16:16 < nickjohnson> rogerh: What do you mean exactly?
16:17 < brett-google> nick: i think he means the version axis
16:17 < nickjohnson> ah
16:17 < Ashar__> did i missed the "session" ?!
16:17 < rogerh> brett/nick: yeah, trying to figure out how best to be
able to keep track of previous verisons of data we store
16:17 < nickjohnson> Ashar__: No, you're in it.
16:17 < Ashar__> nice
16:17 < oizo> hi, can we expect java local data viewer in the next
SKD? Really, its very necessary for many developers..
16:17 < maxr_google> ozio: Yes, you can expect a java local data
viewer in the next SDK.
16:18 < nickjohnson> rogerh: Even if it were available, Bigtable's
model is such that you can't rely on it sticking around. If you need
to be able to reliably access old versions of data, you're best to
implement it in user code.
16:18 < maxr_google> It was supposed to have made the update that went
out last week but we missed the cutoff by just a little bit.
16:18 < drawlabs> python question, any way in the future plans to
specify a python version you want to target? Or Google supporting
versions of python that you can specify per app?
16:18 < AsharLohmar> i had a problem these days building a data
structure in java
16:18 < AsharLohmar> using JDO
16:18 < brett-google> rogerh: indeed nick's right; especially
considering the sugar we put on top of bigtable to support multi-row
transactions, it gets more complex
16:19 < brett-google> but it would be cool to have built-in support
for Datastore snapshotting
16:19 < brett-google> which we coudl do under the covers more
efficiently than just user code
16:19 < maxr_google> yes, built-in support for Datastore snapshotting
would be super cool
16:19 < AsharLohmar> i had a situation like classroom -> students->
grades, built with 1-n bidirectional relations
16:19 < maxr_google> AsharLohmar: Tell me more about your JDO problem.
16:20 < AsharLohmar> on the parrent classes i've used the "mabedBy"
16:20 < rogerhu> max/brett/nick: great, thanks.  indeed that would be
a great feature to have
16:20 < scudder_google> drawlabs: if we were to add additional
versions of python, you would likely specify a different runtime
version. However different Python versions are not on our roadmap at
this point
16:20 < dieterk> I submitted this problem a while ago:
http://code.google.com/p/googleappengine/issues/detail?id=1378
16:20 < brett-google> drawlabs: we've heard requests for python3k; it
would have to be treated as a different runtime version (so in
app.yaml you'd specify py3k instead of python)
16:20 < AsharLohmar> th problem was in this situation ... i had the
classrom and the students defined
16:20 < oizo> maxr_google: good, thanks! And when it will be released
if not secret?
16:20 < AsharLohmar> i could add grades to students
16:20 < brett-google> so yes there's support for doing something liek
this, but there's no py3k right now
16:21 < drawlabs> brett: thanks good to know there is support for it,
hoping for 3000 soon
16:21 < AsharLohmar> but i didn't manage  to query the grades for a
student
16:21 < knoonan> With GAE/J and Ruby, does anyone have a neat solution
for zipping files to overcome the limit of 1000 *static* files? (Ola
Bini and others showed how to tackle the code-file limit.)
16:21 < dieterk> I have two questions: 1. can somebody state if there
is at least a will to fix this? 2. why did somebody move this issue to
Java. My appengine is running on python.
16:21 < maxr_google> oizo: The next release isn't a secret but we
don't have a good estimate of when it will be available.
16:22 < Wooble> knoonan: I don't believe that's possible; you almost
certainly need to serve them out of the datastore.
16:22 < scudder_google> dieterk: looks like there was some confusion,
as you are serving Java applet code, I'll recategorize
16:22 < maxr_google> AhsarLohmar: Did your query return 0 results?
16:22 < maxr_google> Or was there some other problem with it?
16:22 < AsharLohmar> i recived an message saying that the student
field from tha grade that i tryed to query is maped to Student, and
tha paramater i've sent has key from tha classroom
16:22 < knoonan> @wobble, there already are well-documented solutions
for Python and for Java itself, using Zip libraries.
16:22 < dieterk> scudder_google: yes. but Content-Encoding is all
about the HTTP Headers and has nothing to do with the appengine at all
16:23 < AsharLohmar> my real classes war Country->city->taxiCompany
16:23 < maxr_google> AsharLohmar: You're passing a Key in as a
parameter to the query?
16:23 < Wooble> the files aren't static anymore if your code can unzip
them.
16:23 < AsharLohmar> no, i use strings
16:23 < AsharLohmar> gae.encoded-pk or something
16:23 < maxr_google> Right.
16:23 < dieterk> scudder_google: also...may I ask somebody from the
appengine team to comment on the issue - so I get to know the mind of
the appengine team about this issue.
16:23 < maxr_google> So, there's a good chance that error message is
accurate.
16:24 < mib_5nyoz6qq> Any comments why I'm getting
ApiDeadlineExceededException for querying one entity?
16:24 < schwardo_google> dieterk: yeah, it's actually not relevant
whether it's marked as python or java -- it's the core infrastructure
that would need to be changed
16:24 < bmckinlay> [A[B[B[B[B[B[B[B[B[B/quit
16:24 < maxr_google> The way to check is to do
System.out.println(KeyFactory.stringToKey(theKeyString))
16:24 < AsharLohmar> i know that the message was telling the truth, i
didn't find anty workarounds thought
16:24 < nickjohnson> mib_5nyoz6qq: Occasional timeouts will happen,
even for simple queries. They should only account for a very small
fraction of your total requests, though
16:24 < maxr_google> That will tell you if the String you're passing
in identifies a Country or a city.
16:25 < schwardo_google> dieterk: I believe we were only aware of gzip
and compress being used as Content-Encodings, -- I wasn't aware that
custom encodings were being used in this way
16:25 < AsharLohmar> exactly, i know that he is right, my real problem
was how can i query  then
16:25 < knoonan> @wobble, sure: the code is unzipping the content from
zip-files stored in the file-system: it works for Python and Java, I
wonder if someone's done it successfully for JRuby...
16:25 < schwardo_google> will need to read up to see if that's even
allowed in the spec
16:25 < mib_5nyoz6qq> nickjohnson: no, I'm getting this error for more
than 15 hours constantly
16:25 < dieterk> schwardo_google: core change? So it is unlikely to
happen in the near future or ever? Please comment on the issue if you
do not want to allow it since it is a security risk or else?
16:25 < nickjohnson> mib_5nyoz6qq: For every fetch of a particular
entity, or of all entities?
16:25 < maxr_google> If you want to filter by city you'll need a
String that identifies a city, not a country.
16:25 < maxr_google> If you want to filter by city you'll need a
String that identifies a city, not a country.
16:25 < scudder_google> dieterk: and schwardo, we do not currently
allow the content-encoding header to be set/modified
16:26 < AsharLohmar> because i save the city as chil of country
ofcource it has country in it
16:26 < AsharLohmar> also inside the taxi object
16:26 < AsharLohmar> the city has the same key
16:26 < nickjohnson> And have you determined what your failure rate
is? The logs page only shows errors by default, so it can give the
impression everything is failing when only a very small proportion
are.
16:26 < ribrdb> knoonan: you can jar your code or your gem files, and
put it in WEB-INF/lib
16:26 < mib_5nyoz6qq> nickjohnson: for simple query with range set for
1 entity, I described my problem here:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/9720cb2b5cf45947
16:26 < maxr_google> City and country should different keys since they
are different objects.
16:27 < TheBashar> Quick question.  If I create a new entity with a
key_name MyEntity(key_name="abc") and I put() it, if there is already
an entity of the same kind with the same key_name in the datastore,
will it get overwritten?
16:27 < schwardo_google> dieterk:  i don't think there are any
insurmountable security implications, but yes, it's a lower level
change than most and would probably take longer to roll out
16:27 < maxr_google> This might be easier to debug if you post your
model classes and your query code to ghe group.
16:27 < nickjohnson> mib_5nyoz6qq: As I said - what proportion of the
time does this happen? And is it only for a specific entity/query?
16:27 < nickjohnson> TheBashar: Yes.
16:27 < maxr_google> Then I can drop it in to my test framework and
see exactly what is going on.
16:27 < TheBashar> Thank you Nick!
16:27 < Aaron_10> I need some help, I uploaded a app to google  which
has django. I need to use the admin area but I can't for some reason.
16:28 < Aaron_10> the site is  :  dev.mobileconsultinginc.com/admin
16:28 < AsharLohmar> thanks maxr_google , i'll add them on the
appengine group
16:28 < dieterk> schwardo_google: scudder_google: also I don't
understand the argument about core change since you allow to set some
http headers? I really would need Content-Encoding for only a single
file. I didn't think this to be
                an issue since I do set my Content-Encoding in my
many other hosting setups on a daily basis. Seems to be no security
risk for them.
16:28 < drawlabs> datatype question: any plans for a UUID type or
UUIDProperty for datamodels or as the key maybe?  Currently we store
them in strings but lots of apps are distributed and linked via UUID.
Or do you recommend using
                 the name property of the db.Key field? What is the
best way to use UUID when ints as keys aren't needed?
16:29 < knoonan> @ribrdb I know you can JAR your code and gem files
with JRuby, but what about zipping web-content files to exceed the
static-file limit of 1000...?
16:29 < gvanrossum> Hey all, Guido van Rossum here
16:29 < nickjohnson> drawlabs: There's no plans to introduce a
UUIDProperty, but you can write your own. If you're using UUIDs as the
primary key for your entity, certainly, using it in the key name makes
sense
16:29 < nickjohnson> As long as you make sure the first character
isn't numeric
16:30 < nickjohnson> Hi Guido. Do you have an App Engine question to
ask? ;)
16:30 < moraes> hehehe. yes, this is the place.
16:30 < rmalik> hello Guido!
16:30 < schwardo_google> dieterk: i'll respond with more detail on the
issue itself -- sorry about mislabelling it Language-Java
16:30 < drawlabs> nickjohnson: thanks
16:30 < dieterk> gvanrossum: hi...I am Python fan for ever. Thanks!
16:30 < gvanrossum> Hi Nick, no, I thought I'd just make some
waves :-)
16:30 < nickjohnson> You seem to be doing that. ;)
16:30 < ribrdb> knoonan:ah.  well you could write some ruby code to
serve the files out of a jar or zip.
16:30 < rmalik> is there a way to delete an existing application that
you are no longer developing?
16:31 < rogerhu> right now a major limitation is the 1 inequality
property, which makes it hard to do date range scan types.  noticed in
google finance you can graphically view stock performances

http://www.google.com/finance?q=INDEXDJX:.DJI,INDEXSP:.INX,INDEXNASDAQ:.IXIC
does this mean that multiple table scans are required to implement
this type of feature?
16:31 < nickjohnson> rmalik: Not currently, no.
16:31 < drawlabs> guido came to support python 3 on GAE :)
16:31 < drawlabs> guido came to support python 3 on GAE :)
16:31 < nickjohnson> drawlabs: Single-handedly, while blindfolded, in
his sleep! ;)
16:31 < yowgi> Hello. Are there any plans to provide support for the
delivery of static files that have been uploaded or created by the
app? Putting images in the database is always quite inefficient...
16:31 < nickjohnson> rmalik: If you just want it off the list of apps,
you can create a dummy account and make it the sole administrator of
the app, but it'll still count towards your 10 app limit
16:31 < gvanrossum> sorry, no py3k support planned yet
16:32 < maxr_google> rogerhu: You can do a 'between' query for a
single property though.
16:32 < TheBashar> Are there any plans to support 2.6 on GAE in the
near future?
16:32 < maxr_google> rogerhu: What sort of query are you looking to
write?
16:32 < dieterk> schwardo_google: no problem. I really like appengine
in every way but this really is somehow a big issue. With my other
hosting services if a feature is missing I just pay more and they fix
it. I guess we cannot
                settle this with cash?
16:32 < dieterk> :)
16:32 < nickjohnson> yowgi: Static files are already served directly,
not from the datastore.
16:32 < rmalik> nickjohnson: yeah i'm just trying to take it off from
my 10 app limit
16:32 < drawlabs> gvanrossum: yeh I asked, the mechanism is there but
maybe soon.
16:32 < nickjohnson> rmalik: If you run out of apps, you can ask on
the group for more.
16:32 < rogerhu> max: like trying to pull up a list of more than 1000
people who have registered to vote between certain dates or signed up
online between a few months.
16:33 < yowgi> nickjohnson, even user-uploaded images? i mean HTTP
upload, think blog post attachments.
16:33 < rmalik> nickjohnson: the problem with one app is that i
originally set authentication against all google accounts versus a
google apps domain i created later
16:33 < nickjohnson> rmalik: What do you want to do with >1000 records
in a single query?
16:33 < AsharLohmar> (when )will we be available to delete apps from
our account ?!
16:33 < rmalik> nickjohnson: and now i want to switch that
authentication
16:33 < gvanrossum> TheBashar: no 2.6 support planned either, though
it will be a lot easier to pull off. I'm waiting for the rest of
Google to adopt 2.6 first though.
16:33 < knoonan> @ribrdb I believe it should be feasible with JRuby to
serve web-content out of jars / zip files, I'm just wondering if
anyone has done it. I'm especially concerned about how it might be
implemented with Rails (or
                Merb)...
16:34 < TheBashar> @GvR:  Thanks!
16:34 < gvanrossum> drawlabs: I don't understand your remark
16:34 < nickjohnson> yowgi: Oh, right. That is coming - see the
roadmap 'service for storing and serving large files'
16:34 < maxr_google> select from Person where registrationDate < x and
registrationDate > y
16:34 < rmalik> nickjohnson: I think you mistaken the >1000 records
concern with someone else's question
16:34 < yowgi> nickjohnson, thanks.
16:34 < maxr_google> that should work fine since you're only filtering
on a single property.
16:34 < brett-google> rmalik: indeed we've heard people say they want
this before; right now it's not that easy for a variety of reasons,
but it's on our radar
16:34 < nickjohnson> rmalik: Unfortunately, the only way to change the
authentication mode is by creating a new app, currently
16:34 < nickjohnson> rmalik: my apologies
16:34 < dieterk> schwardo_google: scudder_google: thank you for our
help! please also contact me by email if you have any questions - I
could provide much more information on why not havin Content-Encoding
is such a big problem for me.
16:35 < nickjohnson> I meant to address that at rogerhu
has joined #appengine
16:35 < DocSavage> Hello
16:35 < drawlabs> gvanrossum: i asked about py3k on gae.  dev
responded with a reply that said they had the ability to do versioning
but no plans on adding python 3 yet.
16:35 < rmalik> nickjohnson: i'm glad it's on the radar and i
understand it might not be a high priority at the moment. p.s. i'm
REALLY glad you guys added cron jobs
16:35 < rogerhu> max: what if there are more than 1000 records that
get pulled out?  then i need to pull out the next 1000 with a __key__
query
16:36 < nickjohnson> rogerhu: What do you want to do with >1000
records in a single query, though? Surely not display them all to the
user at once?
16:36 < drawlabs> architecture question: say you have an app that runs
on GAE.  Then you have 3-4 services that it uses (say a user, stat and
content service). Is that allowed under the TOS to have the site, and
each service on a
                 different app or do all services also have to be
hosted under the same app? the services would be shared among many
apps not just one.  But is that seen as getting out of billing?
16:37 < gvanrossum> drawlabs: the versioning capability is for the
library, not for the language version; py3k language support (or even
2.6) requires much more work and would probably require you to say
"runtime: python3.0" or
                   "runtime: python2.6".
16:37 < rogerhu> nope, but what if we want to export it to a .csv
file?
16:37 < nickjohnson> rogerhu:
http://code.google.com/appengine/docs/python/tools/uploadingdata.html#Downloading_Data_from_App_Engine
16:37 < brett-google> drawlabs: that's a difficult question because it
really depends on how it's implemented
16:37 < nickjohnson> That's the built-in support; you can also write
your own using remote_api and __key__ queries if you want.
16:37 < brett-google> for example, if you have a generic stats service
that's used by your app and many other people's apps, then yeah,
that's fine
16:37 < drawlabs> gvanrossum: thanks, yes I imagine it is quit a bit
of work to support on this scale.  I hope for it in the future.
16:37 < mun> does bdbdatastore understand ORDER BY <attr> DESC?
16:38 < nickjohnson> mun: It certainly ought to
16:38 < brett-google> but if you have one app for storing data and
another app that just does URLfetch calls to retrieve that data, then
that's more of a single use; that would fall under section 4.4
16:38 < mun> somehow i can get it to print by 'ORDER BY...' by not
'ORDER BY ... DESC'
16:38 < nickjohnson> If it doesn't, that's a bug
16:38 < rogerhu> nickjohnson: thanks .  just trying to figure out a
good way to provide tiered-level permission based access to the data
set.  the remote_api makes it hard to do that
16:38 < nickjohnson> mun: Might want to take this offline or wait
until the end of the dev chat to avoid too much clutter. :)
16:39 < DocSavage> I had a stub-level question on how a cookbook
recipe works -- http://tinyurl.com/rbgfq9
16:39 < picalolabu> good day. python question: do i need to install
PyCrypto separately for my dev server?
16:39 < mun> nickjohnson, yeah sure
16:39 < nickjohnson> rogerhu: Yes, you definitely don't want to use
remote_api for anything other than administrators. If you want your
users to be able to download CSV files, I would suggest using __key__
queries, with multiple
                    requests if necessary.
16:39 < drawlabs> brett: yes that is the item I am talking about 4.4,
we have multiple games for instance that report data.  Each in
different places.  Some use one or more of the services.  But it isn't
a single app. This is where
                 differnet billing would help maybe, to do stuff like
this without seeing as getting out of billing?
16:39 < gvanrossum> picalolabu: yes
16:39 < oizo> bdbdatastore question: if this db emulate production db,
may i estimate datastore size with indexes, (for example 10000
entites), based on the size of bdfile bdbdatastore on the local disk
(with this 10k entities)?
16:39 < nickjohnson> picalolabu: If you want to use PyCrypto, yes.
16:40 < gvanrossum> DocSavage: what's the question about that page?
16:40 < nickjohnson> oizo: I would not rely on BDBDatastore's index
size reflecting space consumption on production App Engine
16:40 < brett-google> drawlabs: we'd like to provide better native
support for 'multitenant' applications, so you can run multiple siloed
datastores and applications under a single app_id
16:40 < rogerhu> nickjohnson/maxr: then does it become difficult in
app engine to do query date ranges & dumping out more than 1000
people? (i guess rather than using the __key__ > last key name i could
retrieve the next 1000 entries
                by using an offset)?
16:40 < picalolabu> nickjohnson: gvanrossum: thanks - but don't upload
the PyCrypto libraries with my app. Correct?
16:40 < nickjohnson> It may - it's probably representative - but don't
rely on it.
16:40 < nickjohnson> picalolabu: Correct.
16:40 < brett-google> this would help a lot with cases like this where
you have lots of code and DB sharing but some fundamental differences
16:41 < DocSavage> The cookbook recipe gives "seamless memcaching" of
puts/gets/queries.  But I'm trying to figure out how it expires query
caches after a put on an entity.
16:41 < nickjohnson> rogerhu: You can filter by date range instead of
key range, as long as you make sense to exclude duplicates with the
exact same timestamp.
16:41 < picalolabu> nickjohnson: thx
16:41 < nickjohnson> DocSavage: It doesn't need to expire caches;
memcache does that
16:41 < drawlabs> brett: that would be good.  However as long as it
doesn't add overhead.  Let's say for architectural reasons you'd want
them under different locations or virtual endpoints.  Like right now
we have services hosted for
                 user, content, game, and stats all in differnet
places and can get data async/parallel.
16:42 < DocSavage> Oh, you mean there's some amount of time the cache
is stale after I do an entity put?
16:42 < brett-google> sure well, you can host an app_id on many
domains and then use the 'host' header to differentiate the task to do
16:42 < brett-google> i've seen people do this
16:42 < nickjohnson> drawlabs, brett: It seems to me that drawlabs is
talking about horizontal separation; what we see abuse around mostly
is vertical separation, with sharding to different backends
16:43 < brett-google> well nick i think he's talking about both
16:43 < nickjohnson> DocSavage: No, it does the memcache put when you
do the datastore put
16:43 < brett-google> like each game would be horizontally separated
16:43 < brett-google> but then the stats and user services would be
vertical
16:43 < rogerhu> nickj: but ultimately the number of queries that get
dumped back is 1000.  so i'm trying to figure out how to retrieve the
next batch and still doing a date range query (inequality property) +
getting the next 1000
                batch
16:43 < drawlabs> brett: I hope to see more on this soon maybe,
because since it is unclear.  Yes talkign more about horizontal not
just breaking it up for getting out of billing.
16:43 < picalolabu> python and gdata: i added a function to read
blogger via gdata (news on my home page). I cache the results but I
have started to see very inconsistent processing times (i.e. some
requests take 3000ms others 60) -
                   is this normal?
16:43 < rogerhu> number of results that get dumped back that is
16:44 < nickjohnson> rogerhu: If you do a "SELECT * FROM MyEntity
ORDER BY date", you can take the last date returned and do "SELECT *
FROM MyEntity WHERE date > :1 ORDER BY DATE"
16:44 < brett-google> drawlabs: i guess the way i see it is it makes
sense to have one app_id for al the common stuff
16:44 < brett-google> content, users, stats
16:44 < brett-google> and then one app_Id per game
16:44 < DocSavage> If I do a Model put, then ask in a query for all
entities in a Model that meet some criteria, how is that query
memcached?  Do I have a misunderstanding in how queries are handled at
the stub-level?
16:44 < brett-google> but i think it makes less sense to have one
app_Id for each individual common service
16:44 < scudder_google> picalolabu: are those times for the urlfetch
request to the Blogger API?
16:44 < brett-google> does that distinction make sense?
16:44 < nickjohnson> DocSavage: Queries aren't memcached, only the
entities themselves. So you'll see the most benefit from puts and
gets.
16:45 < jcgregorio> rogerhu:
http://google-appengine.googlegroups.com/web/efficient_paging_using_key_instead_of_a_dedicated_unique_property.txt
16:45 < lidaobing> [java] if I want to count the rows with JDO, is
this also limited to 1000?
16:45 < nickjohnson> lidaobing: Yes
16:46 < jcgregorio> rogerhu: That writeup from Ryan should cover the
use case you are talking about, using a bookmark to resume the query
for the next 1000 items
16:46 < rogerhu> jcgregorio: great thanks i remember seeing that link,
thanks for the reminder
16:47 < drawlabs> brett: thanks that helps but it would be great if
this was more clear on the ethics there in the future.  We are
actually discussing what to do now and some are suggesting mt grid
service at $20 a pop for each.  The
                 limit is 1TB but the drop off is a scary 2.30 per
GB.  So you can see how billing is kindof dictating how things are
architected in many cloud projects probably.  ok enough billing :)
16:47 < picalolabu> scudder_google: i don't know, they are the times
that appear in the log files with the "... high CPU ..." warning -
when i test from my computer it is always under 200ms
16:47 < DocSavage> nick: Oh, jeez.  Queries *aren't* memcached.   OK,
wasn't clear because the recipe says "the cache is updated through -
queries", but I see this meant the individual entities are memcached
on query.
16:47 < nickjohnson> right
16:47 < knoonan> Has there been any progress on using certs other than
Google's, or domains other than XYZ.appspot.com, for HTTPS
connections? (I remember talk of a workaround using the latest
browsers...)
16:48 < nickjohnson> It could probably be improved now that key-only
query support is available to do a key-only query and retrieve
entities from memcache and the datastore as appropriate, but I'm not
sure how much that would improve
                    things.
16:48 < brett-google> drawlabs: yeah makes sense
16:48 < brett-google> knoonan: the issue here is still HTTPS's support
for SNI
16:48 < brett-google> "server name identification"
16:48 < oizo> if app_id is the part of all primary keys, is more
shortly app_id for very big db (billions entities) saves my budget for
data store?
16:49 < lidaobing> is there any progress (or any possibility) on issue
1269: unique static ip per app/account
http://code.google.com/p/googleappengine/issues/detail?id=1269
16:49 < brett-google> the issue is that HTTPS requires the reverse IP
address of the host to match the certificate hostname
16:49 < brett-google> so each website with HTTPS must have a unique IP
address
16:49 < nickjohnson> oizo: In theory, yes. In practice, I think you'd
be hard pressed to tell the difference.
16:50 < brett-google> SNI fixes this by putting the hostname in the
SSL handshake; so then virtual hosting providers can use a single IP
range to serve multiple hosts
16:50 < nickjohnson> brett-google: I thought the real problem was that
you have to establish the SSL session _before_ specifying the
hostname, but you can't tell what hostname they want until _after_, in
the virtual hosting scenario.
16:50 < brett-google> that's the technical problem
16:50 < brett-google> but the only way to get around that is to assign
a separate IP for each hostname you want to serve HTTPS on
16:50 < nickjohnson> right
16:50 < brett-google> the good news is that TLS 3.1 (which is in
safari, firefox, ie8, and opera) supports SNI
16:50 < scudder_google> picalolabu: it sounds like the CPU usage
warnings are from a longer than expected wait time for the response to
get back from the Blogger API, which occasionally happens
16:50 < nickjohnson> I didn't know SSL certs encoded the reverse-ip,
though.
16:50 < brett-google> that's how they work
16:51 < brett-google> the certs odn't have it, but the policy of
browsers is to do the reverrse lookup
16:51 < nickjohnson> Oh, right.
16:51 < brett-google> the recent ie6 forced upgrade to ie8 has helped
a lot
16:52 < brett-google> so maybe we'll have more wide-spread SNI support
16:52 < brett-google> but until then it's likely unrealistic to get
HTTPS support beyond https://app_id.appspot.com
16:52 < brett-google> the good news is that now you can use any Google
Apps domain to log in on appspot.com
16:52 < brett-google> so all app engine apps can use it
16:52 < picalolabu> scudder_google: could the inconsistency be that
some users see the cache and others don't, hence the need to hit
blogger again? or would the cache be seen by everybody until it is
destroyed?
16:53 < brett-google> lidaobing: nothing to report now; this bug falls
into a similar realm as HTTPS support actually
16:53 < brett-google> we'd need a separate IP per app_id
16:53 < rogerhu> am i correct to assume also that there's no current
way to have multiple versions of a datastore for one application?  (i
know you can have different app versions)
16:53 < knoonan> @brett-google and @nickjohnson: thanks! I guess we
just have to wait for IE8 to become the norm...
16:53 < brett-google> that's very costly and significantly increases
the complexity of our network infrastructure
16:53 < nickjohnson> rogerhu: That's correct.
16:53 < nickjohnson> Don't thank me, I'm learning from brett-google
too ;)
16:53 < mun> nickjohnson, i'm now using bdb and it contains about 150k
entities. but when i run a .count() on it, it still times out. is it
typical?
16:54 < nickjohnson> mun: Yes, because BDBDatastore takes the same
approach to counting queries as App Engine does, and thus has the same
limitation
16:55 < lidaobing> brett-google, bad news
16:55 < picalolabu> brett-google: could you please expand on "... any
Google Apps domain to log in on appspot" - im not sure I understand
the implication
16:55 < DocSavage> nick: After installing bdbdatastore, I'm getting
the following error in socket_apiproxy_stub.py, line 63, in
closeSession: self._sock.close()    ... was wondering if there's a
Google group or someplace bdbdatastore
                  users could exchange info or ask questions.
16:55 < mun> nickjohnson, you mean they take the same approach as the
app engine on the dev server or on the production server as well?
16:55 < rogerhu> nick: great thanks.  this has all been very helpful
16:55 < nickjohnson> mun: On the production server.
16:55 < scudder_google> picalolabu: I'm not sure what your design
looks like, are you memcaching the results of the Blogger API query?
Do you set an expiration, etc? An infrequent long request could also
be a new instance of your app
                       being spun up, imports need to be done again,
etc.
16:55 < DocSavage> nick: The error was 'NoneType' object has no
attribute 'close'
16:56 < brett-google> picalolabu: if your app has auth restricted to a
single google apps domain (i.e., users @example.com), then you can
serve content to them over HTTPS on app_id.appspot.com
16:56 < nickjohnson> Counting the results of a query requires
iterating over them all. This is actually the case for the vast
majority of queries in an RDBMS, too, they just hide the work.
16:56 < brett-google> and they can log in thorugh appspot.com
16:56 < brett-google> before it was the case that these users could
not log in through appspot.com
16:56 < mun> nickjohnson, so does that mean if my queries time out on
bdb, then they'll time out on the production server as well?
16:56 < brett-google> they could only log in on domains that were
under example.com
16:56 < nickjohnson> DocSavage: Known bug that I'm fixing this
evening. It happens when there were no datastore requests in a
request. You can fix it by adding an "if self._socket:" guard clause.
16:56 < mun> nickjohnson, well, i've set the limit of the count to a
small value-- like 10.
16:56 < DocSavage> nick: thanks!
16:57 < nickjohnson> mun: Not for certain, but they're definitely
correlated
16:57 < nickjohnson> mun: And it times out when the limit is set to
10?
16:57 < mun> nickjohnson, yeah that's right
16:57 < mun> i'm doing .count(10)
16:57 < nickjohnson> mun: I'll look into it.
16:57 < mun> nickjohnson, i see. thanks
16:59 < picalolabu> scudder_google: yes, i was referring to the
blogger api results being memcached - but i had not thought about the
new creating a new instance. thx
16:59 < picalolabu> brett-google: got it - thx
17:00 < DocSavage> Regarding different apps providing services -- does
each app_id get its own allocation of memcache and memory because each
app has its own instances?
17:00 < nickjohnson> mun: Just checked the source - stupidly, I'm not
giving up if it reaches the count specified. Easy fix. :)
17:01 < Aaron_10> I went to the django channel and the  told me that
the django admin area uses django models which google apps dosen't
allow, so they said to ask here for a work around the problem.
17:01 < Aaron_10> cause I am having trouble making a admin user for
the website django admin area.
17:01 < Aaron_10> which is called superuser.
17:02 < mun> nickjohnson, you mean it keeps searching even beyond n
many have found?
17:02 < gvanrossum> Aaron_10: have you tried the Google app engine
helper for Django?
17:02 < nickjohnson> mun: Yes.
17:02 < mun> nickjohnson, does that mean fetch has that behaviour too?
17:02 < Aaron_10> ya, it didn't do  much.
17:02 < gvanrossum> Aaron_10:
the connection]
17:02 < Aaron_10> are you saying that should be the work around?
17:02 < gvanrossum> Aaron_10: IIRC it supports the Django admin
interface
17:03 < gvanrossum> Aaron_10: yes
17:03 < knoonan> @Aaron_10 try  AEP (App Engine Patch): the sample
application includes an admin interface out-of-the-box.
17:03 < jago1> I have a problem with wordle.net hosted on the Google
appengine
17:03 < nickjohnson> mun: No, fetch only returns the requested number
of entities
17:03 < Aaron_10> ok, I will look more into it. I tried it but I might
of done something wrong.
17:03 < nickjohnson> gvanrossum: Aaron is trying to use the Django
admin interface, which apparrently uses Django models
17:04 < mun> nickjohnson,  okay
17:04 < nickjohnson> I'm not aware of anything that lets you use
unmodified Django models in GAE, though
17:04 < jago1> visiting the site works...but when I open the applet it
blocks for over 30 sec. before the applet starts. It seems it is
confused finding the appengine:
              
http://img166.imagevenue.com/img.php?image=38755_http_traffic_122_43lo.jpg
17:04 < scudder_google> I'd like to close the official chat hour, but
some of us will still be here after, so don't hold back on questions.
 <gvanrossum> Aaron_10: nickjohnson: I take it back, the article says
it does not use the Django admin site
 <gvanrossum> So, try app-engine-patch :-)
Thanks all!
--~--~---------~--~----~------------~-------~--~----~
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-appengine@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