Hello everyone. There is a new Google Group for discusing developing
Facebook Applications powered by Google App Engine. Stop by and say
hi if you're playing with these two new techs.
http://groups.google.com/group/facebook-and-google-app-engine
--~--~-~--~~~---~--~-
Strange problem here... I run appcfg.py to upload my app after making
a few changes, and there's a long pause on any one of the steps
including "Initiating update", "Cloning X static files", etc. through
"Closing update". After this pause, the upload aborts with a big
stack trace. (Most often it
This is happening again today on a different app even.
For the last half hour (since I started trying), I keep getting app
upload timeout errors.
It actually completed an update one time, but then my app wasn't
actually updated...
Not being able to update apps totally kills productivity... Is
an
David,
It sounds like a very interesting and useful experiment you're
contemplating. I can't figure out why some people are so negative on
this, unless they're insiders and afraid of some unfortunate truths
being discovered, which I certainly hope is not the case. This is
about discovery and th
On Nov 9, 2:21 pm, Ross Ridge <[EMAIL PROTECTED]> wrote:
> Personally, I'd be more concerned about reliabilty than scalabity.
> Not all of Google service's have a great track record in that respect.
I agree: reliability is even more important than scalability. So far
GAE has unfortunately appe
Anybody like this? I propose that Google allows Datastore entries to
expire and be automatically purged. The default would be to never
expire (current behavior), but we might get an optional param, like
"time" from memcache.add():
time
Optional expiration time, either relative number of seconds
This has been driving me nuts for the better part of 3 days.
I'm trying to organize my Python code, but when I move .py files out
of the app's root directory, the production servers seem to be unable
to import them. Yet it works perfectly fine on my local
dev_appserver.
Say I create a directory
Alexander Kojevnikov, you are the man! I changed "code" to
"codpiece", and all is well. Thank you so much.
Probably this issue should be documented somewhere, or at least the
odd behaviors of the server should be duplicated by the
dev_appserver. ( Similar to this note:
http://code.google.com/a
http://code.google.com/p/googleappengine/issues/detail?id=930
On Dec 16, 1:56 pm, Alexander Kojevnikov
wrote:
> Add an issue to the tracker and post the link here, I will definitely
> star it.
--~--~-~--~~~---~--~~
You received this message because you are subscr
You should open a command window first (START / RUN / "cmd"), then try
to run the dev_appserver in there so you can see what the output is
when it terminates. The error messages are usually helpful in
diagnosing problems.
FYI I "cd" into the app's directory and use "dev_appserver.py .". You
may
Personally: I haven't used Python in a few years, and I've never used
Django, though it looks good. Most of my recent web work has been
LAMPish (including large structured OO projects in PHP 5). I've found
the learning curve with GAE to be pretty immense but presumably
worthwhile. I'm very impr
I understand generally that putting lots of small entities to the
datastore is faster than putting lots of large entities.
Can anybody say to what extent the difference is minimized if the
large entities are barely changing?
I.e. numerous indexes wouldn't need to update because only a single
pro
On Dec 19, 4:26 am, Waldemar Kornewald wrote:
> There's nothing magic about the workarounds. In app-engine-patch
> there's a sample project which gets you started immediately with the
> latest stable release. Everything that's need is placed in a folder
> called "common" and in order to upgrade
Using regexps (regular expressions) in your app.yaml url handlers
allows you more control over your URLs and how you structure your
app. You can also use regexps in your WSGI handlers within your
Python code, either instead of or in addition to the app.yaml
patterns, for more control.
In the exa
Is there a good way (any way) to hook a db.Model subclass so that it
does some magic right before being written to the Datastore, and some
reverse magic right when it's read back?
E.g. Say you want to have a big JSON object stored in a TextProperty.
Obviously you could JSON and de-JSON it yoursel
{# one line is properly commented out, as it should be #}
{# but multiple lines are output as literal text,
as if they weren't even commented at all,
and we even see the comment begin/end tags! #}
Django Template Docs [1] don't mention this. A little research [2][3]
revealed that the Dj
does this
make for an extra slow pickle?).
Pickle overload: http://docs.python.org/library/pickle.html
On Dec 23, 11:14 pm, Alexander Kojevnikov
wrote:
> http://is.gd/dgBK
>
> On Dec 24, 5:38 pm, boson wrote:
>
> > Is there a good way (any way) to hook a db.Model subclass so
JSONProperty:
http://appengine-cookbook.appspot.com/recipe/add-a-jsonproperty-to-your-model-to-save-a-dict-to-the-datastore/
Curious about performance implications. Is anybody actually doing
this?
On Dec 24, 1:28 am, boson wrote:
> That's interesting. I haven't looke
Say I have:
class MyClass(db.Model):
foo1 = db.IntegerProperty()
foo2 = db.IntegerProperty()
foo3 = db.IntegerProperty()
obj = MyClass(foo1=100, foo2=200, foo3=300)
I want to loop over foo values. I found that I can do:
for x in [1, 2, 3]:
print obj.__dict__['_foo%d' % x]
Is this bad
y, prop)
>
> Cheers,
> Alex
> --www.muspy.com
>
> On Dec 29, 8:21 am, boson wrote:
>
> > Say I have:
>
> > class MyClass(db.Model):
> > foo1 = db.IntegerProperty()
> > foo2 = db.IntegerProperty()
> > foo3 = db.IntegerProperty()
>
> &
It's not really clear what you're trying to do. You have "+str(loct)
+" in a URL. Is that supposed to be evaluated by JavaScript in the
browser? If you post a larger snippet of your issue it might help
explain your problem.
On Dec 29, 7:59 pm, nicklv wrote:
> Hi,
>
> I'm using self.response.o
Antonin, on behalf of the community, thanks for your great
contributions!
For what it's worth (and in the absence of more formalized tools),
I've always found logging to be an effective means of debugging when
used *intelligently*. The "logging" module combined with Python's
"repr" function are
Take a look at: http://www.textmarks.com/dev/
There's a very easy API to receive SMS into your app (as an HTTP
POST), and your HTTP response gets sent back to the person's phone as
a text message. Takes 10 minutes or less to set up. Here's a
tutorial: http://www.webmonkey.com/tutorial/Build_an
On Dec 2 2008, 9:44 am, gops wrote:
> another question is , how can i make my entity die after particular
> time <-- it can be
> done manually .. but is there any automatic/built in way ?
That would be a great feature.
You should go and STAR this issue to raise awareness and register your
reque
There is a new issue for this:
Automatic expiration/purge of Datastore entities (like memcache has)
http://code.google.com/p/googleappengine/issues/detail?id=914
STAR it! You know you want it.
On Nov 20 2008, 10:49 am, Jeff S wrote:
> Hi boson,
>
> It sounds like this idea belon
You likely decided to change your URL from "/image" to "/img" in the
middle of your templatizing, but forgot to change it in the HTML
template itself. In other words, you're telling the browser to look
at "/image?img_id=...", but your app is only binding a handler to "/
img" (in application=webap
GAE docs [1] on configuring for serving static files say the "url"
param used with static_dir "uses regular expression syntax". I can't
seem to get this to work.
I wanted to let the URLs "/stuff/v1/thing.gif", "/stuff/v2/thing.gif",
etc. all refer to a file "thing.gif" in my app's "/static/stuff
*) would match the URL
> /item-127/category-fruit, and use 127 and fruit as the first and second
> groupings.
> -Marzia
>
> On Tue, Jan 6, 2009 at 12:16 AM, boson wrote:
>
> > GAE docs [1] on configuring for serving static files say the "url"
> > param used
Ben,
I also am developing FB apps with GAE. I set up a Google Group for
this:
http://groups.google.com/group/facebook-and-google-app-engine
and we've touched on the topic of how to best do app versioning there
too. Your proposal is interesting!
That group isn't a substitute for this one, but i
These dev_appserver.py params seem important for running multiple
instances:
--address=ADDRESS, -a ADDRESS
Address to which this server should bind. (Default
localhost).
--port=PORT, -p PORT
Port for the server to run on. (Default 8080)
--datastore_path=PATH
Path to use for storing Datastore fi
Tzakie,
A few things:
1. What is the shape of your data? i.e. how big are your entities and
what do they contain?
2. How are you using entity groups? Is all your data in a single
entity group (shared ancestor)?
3. Also try to experiment with permutations of your index and query to
try to iso
Brian,
It's hard to tell what you're actually stuck on, because you're
throwing out a lot of information about SVN, transactions, logging,
production vs. development, etc.
I suggest you start a new thread with a simple and distilled version
of your question, and only include short and relevant s
I've been planning something like this for my app, and so far this is
the best I've come up with:
First of all, you don't want to be querying to sum up scores for
individual users, so you need to keep a tally in one place. This is
BigTable business as usual.
In each relevant entity where you ar
On Jan 8, 1:00 pm, "Amir Michail" wrote:
> But how would you do this with a 24 hour rolling window?
My solution was for a simple fixed 24-hour chunks.
But you could adapt it to store 24 fixed hourly chunks in each entity
and a timestamp to identify the window. Then roll the data back by
the pr
BigTable is an object store, so you can't ask it for specific fields
like you can in a traditional database. In the future we may get new
tools from Google that operate in cloud data and return a result
(MapReduce, etc.), but not yet.
You might try (like Dan said) breaking your entities up into
On Jan 8, 3:44 pm, "Amir Michail" wrote:
> On Thu, Jan 8, 2009 at 5:34 PM, boson wrote:
>
> > On Jan 8, 1:00 pm, "Amir Michail" wrote:
> >> But how would you do this with a 24 hour rolling window?
>
> > My solution was for a simple fixed 24-
For what it's worth, I wrote a simple JSON importer for my app. I
hand-write (or later will build a tool to write) the core data, and
use the importer to upload it. It's mostly direct dict->entity
mapping, but there is also custom code where appropriate for reference
fixing, validity checks, etc
If you need to compare derived items (beyond what the template engine
can manage), then you need to prepare them in Python. In the case you
mentioned, that means 1) add Python code to your handler to convert
dates to string representations and 2) make those strings available to
your template for
uld you make a version of {% with %} that just assigns a
variable from then on, without requiring a closing {% endwith %}? I
haven't played with that aspect of templates much.
On Jan 13, 3:37 pm, Elvis wrote:
> Thank you boson!
>
> I think that way not a very good, because try get si
I just launched the alpha version of my Facebook/GAE app. With only a
few users so far I'm already seeing intermittent "DownloadError:
ApplicationError: 2" showing up from urlfetch.fetch().
This has shown on both calls to users.getInfo (getting only 5 fields
for a handful of users) and friends.g
Thanks to GAE team for whatever you may have done over the last couple
months. appcfg update now seems much snappier and more reliable than
it did previously.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
"Google A
What is the performance difference we should expect (if any) between:
1. N x Model.get(key)
i.e. making N calls to Model.get with various keys
vs.
2. Model.get([key1, ... keyN])
i.e. making a single call to Model.get with an array of N keys
I'm trying to optimize out some CPU warnings. Will
ror means is a fetch error, which usually indicates the remote
> host denied or otherwise errored out on the request.
>
> -Marzia
>
> On Wed, Jan 14, 2009 at 9:06 AM, boson wrote:
>
> > I just launched the alpha version of my Facebook/GAE app. With only a
> &
That is a curious situation. I would like to know also if there is a
way to inject code into the put-stream regardless of method called, as
I have various put() overrides as well.
On Jan 13, 9:45 pm, Devel63 wrote:
> I overrode the put method on a class derived from Model, primarily
> because I
Thank you!
On Jan 14, 3:00 pm, Alexander Kojevnikov
wrote:
> > What would the try/catch look like to catch this specific error (and
> > not all errors)?
>
> try:
> response = urlfetch.fetch(url)
> except urlfetch.DownloadError:
> # process the error
> pass
--~--~-~--~~---
I would wrap the lock-granting in a transaction:
1. read.
2. ensure not locked.
3. set locked.
4. write.
If the entity is locked in step 2 or the transaction fails, then bail
out -- you didn't get the lock.
See: http://code.google.com/appengine/docs/datastore/transactions.html
On Jan 14, 3
Yay! Both Alexander & Bill have been very helpful and knowledgeable.
I'm glad to see the formal recognition and development of the GAE
community.
On Jan 15, 12:12 pm, "Daniel O'Brien (Google)"
wrote:
> Hello everyone,
>
> Some of you may have noticed the recent addition of a "guru" listing
> at
On Jan 16, 11:25 am, Devel63 wrote:
> I wish I knew how to solve this, but I don't. I hope someone can tell
> both of us what the preferred method for handling a put override is.
That was the subject of this still open thread:
http://groups.google.com/group/google-appengine/browse_thread/thread
After a URL in the request log are the following fields (example):
200 1584ms 2571ms-cpu 4kb
Am I correct in believing these are: HTTP response code, real time,
"CPU time", and response size?
Now I get various orange and red warnings depending on the ms-cpu
value (almost always when I create an e
Hi Marzia, thanks for responding. I've read that a few times actually
and it's part of what is confusing. See:
1.
Re: http://code.google.com/appengine/kb/general.html#highcpu
That link describes a message that says:
"This request used a high amount of CPU, and was roughly
X times over the a
the most basic pages right out of
memcache.
On Jan 20, 12:39 pm, boson wrote:
> Hi Marzia, thanks for responding. I've read that a few times actually
> and it's part of what is confusing. See:
>
> 1.
> Re:http://code.google.com/appengine/kb/general.html#highcpu
> Th
Hey guys,
I came up with this pattern to use when pages might need to create a
few objects, and such creations would (sadly) exceed the page's CPU
limit and go against your quota. It's a way to ask the browser to
redirect back to the same page as each object is created, but without
cluttering yo
Anybody have luck with this combo: django + GAE + app-engine-patch +
i18n ?
I'm on Mac OS X 10.5. First I had to get the gettext package from
Fink.
But now still when I run "manage.py makemessages -l en", I get:
Error: errors happened while running xgettext on __init__.py
/bin/sh: xgettext
U Gettext' is not
> installed or not added in systems Path. I am Guessing it will be
> similar case on Apple.
>
> Before using Django, try to run xgettext under Shell.
>
> Chef
>
> Free U.S. Immigration Guidehttp://visachoice.appspot.com
>
> On Jan 22, 3:49 am
A while back I found that doing a hard-refresh (CTRL-R) on the logging/
data viewer page sometimes "wakes up" the admin web app, like it
somehow got stuck on some previous version or something... YMMV.
On Jan 25, 11:17 am, Y wrote:
> Logging has stopped working for my application since 20/Jan/
>
Consider wrapping the get/change/put in a transaction:
http://code.google.com/appengine/docs/python/datastore/transactions.html
On Jan 25, 9:28 pm, David Kamenetz wrote:
> I finally got this working.
>
> My python module looked something like this:
>
> from google.appengine.ext.db import Key
>
On Jan 27, 12:04 am, Blixt wrote:
> I hope these quotas will be visible in the future so
> that they can be monitored, and that there will be options to extend
> these quotas.
FYI there is a page in the App Engine admin console that shows all
your quota and gives up-to-the-minute monitoring, in
I can't get pdb to work with Django + app-engine-patch.
When I do this in my code:
import pdb
pdb.set_trace()
I get a stack trace printed to the console with a "BdbQuit" exception,
but the (Pdb) prompt itself is written to the HTML output with the
HTML for the Debug error page immediately fo
I'm trying to write a custom authentication backend for Django, as
described here:
http://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend
I started with the simple "SettingsBackend" example in the docs, and
that doesn't even work. As soon as I try to construct a Use
operly).
My Users don't persist in the DB (auth is done remotely), and I have
been warned this may cause problems for the admin site due to
messaging issues, but we don't use the admin site anyway. I'm sure it
will cause other problems too. We shall see.
On Jan 27, 3:2
I don't know about getting the port, but you should have this at the
top of your file if you want to use the "os" module:
import os
On Jan 28, 4:14 pm, Huan wrote:
> I know I can get the requester's IP address by
> self.request.remote_addr, but how do I get the requester's TCP port
> number?
[hook]" like described in the
> discussion).
> You may also want to take a look at firepython in conjunction with the
> Python logging module, it can also be of great help when you want to
> verify how your code behaves in action.
>
> Best Regards,
>
> Jesaja Everling
>
On Jan 29, 5:15 am, Waldemar Kornewald wrote:
> What exactly was the problem? Could you please post the settings
> backend code here?
This is what I was following:
http://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend
> Did you try to add a few logging.info() call
Check out this tutorial that shows how to upload, store (as Blobs),
and serve images:
http://code.google.com/appengine/docs/python/images/usingimages.html
You should be able to adapt it to VRML quite easily.
On Jan 29, 8:34 am, Kieran wrote:
> Hi
>
> I am looking at making an app that takes som
Running Django + app-engine-patch locally... Frequently on requests
(can't determine why/when) I get these two log items:
DEBUG Could not import "strop": Disallowed C-extension or built-in
module
DEBUG Could not import "fcntl": Disallowed C-extension or built-in
module
Each one takes about half
One thing to consider is that if you are never searching on the
integers themselves, then keeping them out of indexed properties
should reduce some overhead in creating/updating indexes (which
automatically exist for all Integer and List fields!). So if you went
with your hourly entity approach,
I have heard of this problem. One workaround that has apparently
worked in the past is:
1. Log out of Google app engine.
2. Close browser (all windows - make sure you have quit the browser
app).
3. Reopen browser.
4. Try again.
On Feb 2, 6:04 am, Sagie Maoz wrote:
> Hi,
>
> I've just started
This is on Mac OS X 10.5.6. I didn't add any external imports, but
I'll go back over all of my imports anyway and see if something might
be triggering it.
On Jan 31, 4:41 am, Waldemar Kornewald wrote:
> Hi,
>
> On Jan 29, 10:55 pm, boson wrote:
>
> > Running Djang
I agree this is going to be an issue for applications that are not
read-heavy. The more interactivity and state changing done by users
in your app, the more expensive it is going to be to host on GAE.
Googlers have hinted that they're working on getting the CPU-cost for
DS operations down, but i
I've seen a number of threads going back concerning Pylons [1] support
and problems in App Engine. Also there is a "appengine-monkey" patch
[2] that attempts to integrate Pylons (but looks kinda scary).
What is the latest & greatest status / wisdom on this?
[1] http://pylonshq.com/
[2] http://co
Kind of scary if it's really that easy to shut down a GAE application
from a script running on a single IP address for less than an hour.
I think we would all like to hear from Google how they plan to deal
with this problem in the general sense:
a) in terms of preventing apps from going offline
Some relevant references:
Marzia Niccolai (Google) said this in Sep 2008:
"On the broader issue of denial-of-service attacks, these are an
unfortunate
reality in the web world. While we don't currently offer applications
any
specific protections against attacks of this nature, this is something
This group is pretty low traffic, but you might have better luck:
http://groups.google.com/group/facebook-and-google-app-engine
P.S. FB TOS does not allow apps to incentivize social actions.
On Apr 1, 7:30 pm, "benf...@gmail.com" wrote:
> Would some please provide me with an example of how to
As Ben said, where is that number coming from? It sounds unusually
large. Check your GAE logs to see if it's ms-CPU or what. Note that
if you make multiple FB API calls, your handler will take as long as
all of the round trips to FB and back.
FYI there is a GAE+Facebook group here:
http://grou
You need to ramp up your tests over many minutes to allow GAE to spawn
enough instances to handle the traffic. I don't know their exact
algorithm, but I know it takes time to scale up.
On Apr 15, 1:33 pm, Anonymous Coderrr wrote:
> Good points.
>
> I rewrote the test so it fires off 20 requests
75 matches
Mail list logo