[google-appengine] Re: Parallel urlfetch utility class / function.
Hey Joe, With the gdata package you can do something like this instead: As usual, completely untested code, but looks about right.. from youtube import YouTubeVideoFeedFromString def get_feeds_async(usernames): fetcher = megafetch.Fetcher() output = {} def cb(username, result): if isinstance(output, Exception): logging.error('could not fetch: %s', output) content = None else: content = YouTubeVideoFeedFromString(result.content) output[username] = content for username in usernames: url = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' %\ (username,) fetcher.start(url, lambda result: cb(username, result)) fetcher.wait() return output feeds = get_feeds_async([ 'davemw', 'waverlyflams', 'googletechtalks', 'TheOnion', 'winterelaxation' ]) # feeds is now a mapping of usernames to YouTubeVideoFeed instances, or None if could not be fetched. 2009/3/18 Joe Bowman bowman.jos...@gmail.com: This may be a really dumb question, but.. I'm still learning so... Is there a way to do something other than a direct api call asynchronously? I'm writing a script that pulls from multiple sources, sometimes with higher level calls that use urlfetch, such as gdata. Since I'm attempting to pull from multiple sources, and sometimes multiple urls from each source, I'm trying to figure out if it's possible to run other methods at the same time. For example, I want to pull a youtube entry for several different authors. The youtube api doesn't allow multiple authors in a request (I have a enhancement request in for that though), so I need to do a yt_service.GetYouTubeVideoFeed() for each author, then splice them together into one feed. As I'm also working with Boss, and eventually Twitter, I'll have feeds to pull from those sources as well. My current application layout is using appengine-patch to provide django. I've set up a Boss and Youtube model with get methods that handle getting the data. So I can do something similar to: web_results = models.Boss.get(request.GET['term'], start=start) news_results = models.Boss.get(request.GET['term'], vertical=news, start=start) youtube = models.Youtube.get(request.GET['term'], start=start) Ideally, I'd like some of those models to be able to do asynchronous tasks within their get function, and then also, I'd like to run the above requests at the same, which should really speed the request up. On Mar 17, 9:20 am, Joe Bowman bowman.jos...@gmail.com wrote: Thanks, I'm going to give it a go for urlfetch calls for one project I'm working on this week. Not sure when I'd be able to include it in gaeutiltiies for cron and such, that project is currently lower on my priority list at the moment, but can't wait until I get a chance to play with it. Another idea I had for it is the ROTmodel (retry on timeout model) in the project, which could speed that process up. On Mar 17, 9:11 am, David Wilson d...@botanicus.net wrote: 2009/3/16 Joe Bowman bowman.jos...@gmail.com: Wow that's great. The SDK might be problematic for you, as it appears to be very single threaded, I know for a fact it can't reply to requests to itself. Out of curiosity, are you still using base urlfetch, or is it your own creation? While when Google releases their scheduled tasks functionality it will be less of an issue, if your solution had the ability to fire off urlfetch calls and not wait for a response, it could be a perfect fit for the gaeutilities cron utility. Currently it grabs a list of tasks it's supposed to run on request, sets a timestamp, runs one, the compares now() to the timestamp and if the timedelta is more than 1 second, stops running tasks and finishes the request. It already appears your project would be perfect for running all necessary tasks at once, and the MIT License I believe is compatible with the BSD license I've released gaeutilities, so would you have any personal objection to me including it in gaeutilities at some point, with proper attribution of course? Sorry I missed this in the first reply - yeah work away! :) David If you haven't see that project, it's url ishttp://gaeutilities.appspot.com/ On Mar 16, 11:03 am, David Wilson d...@botanicus.net wrote: Joe, I've only tested it in production. ;) The code should work serially on the SDK, but I haven't tried yet. David. 2009/3/16 Joe Bowman bowman.jos...@gmail.com: Does the batch fetching working on live appengine applications, or only on the SDK? On Mar 16, 10:19 am, David Wilson d...@botanicus.net wrote: I have no idea how definitive this is, but literally it means wall clock time seems to be how CPU cost is measured. I guess this makes sense for a few different reasons. I found some internal function
[google-appengine] Re: Parallel urlfetch utility class / function.
Ah ha.. thanks David. And for the views, if I really wanted to launch everything at once, I could map my boss, youtube, twitter, etc etc pulls to their own urls, and use megafetch in my master view to pull those urls all at once too. On Mar 18, 5:14 am, David Wilson d...@botanicus.net wrote: Hey Joe, With the gdata package you can do something like this instead: As usual, completely untested code, but looks about right.. from youtube import YouTubeVideoFeedFromString def get_feeds_async(usernames): fetcher = megafetch.Fetcher() output = {} def cb(username, result): if isinstance(output, Exception): logging.error('could not fetch: %s', output) content = None else: content = YouTubeVideoFeedFromString(result.content) output[username] = content for username in usernames: url = 'http://gdata.youtube.com/feeds/api/users/%s/uploads'%\ (username,) fetcher.start(url, lambda result: cb(username, result)) fetcher.wait() return output feeds = get_feeds_async([ 'davemw', 'waverlyflams', 'googletechtalks', 'TheOnion', 'winterelaxation' ]) # feeds is now a mapping of usernames to YouTubeVideoFeed instances, or None if could not be fetched. 2009/3/18 Joe Bowman bowman.jos...@gmail.com: This may be a really dumb question, but.. I'm still learning so... Is there a way to do something other than a direct api call asynchronously? I'm writing a script that pulls from multiple sources, sometimes with higher level calls that use urlfetch, such as gdata. Since I'm attempting to pull from multiple sources, and sometimes multiple urls from each source, I'm trying to figure out if it's possible to run other methods at the same time. For example, I want to pull a youtube entry for several different authors. The youtube api doesn't allow multiple authors in a request (I have a enhancement request in for that though), so I need to do a yt_service.GetYouTubeVideoFeed() for each author, then splice them together into one feed. As I'm also working with Boss, and eventually Twitter, I'll have feeds to pull from those sources as well. My current application layout is using appengine-patch to provide django. I've set up a Boss and Youtube model with get methods that handle getting the data. So I can do something similar to: web_results = models.Boss.get(request.GET['term'], start=start) news_results = models.Boss.get(request.GET['term'], vertical=news, start=start) youtube = models.Youtube.get(request.GET['term'], start=start) Ideally, I'd like some of those models to be able to do asynchronous tasks within their get function, and then also, I'd like to run the above requests at the same, which should really speed the request up. On Mar 17, 9:20 am, Joe Bowman bowman.jos...@gmail.com wrote: Thanks, I'm going to give it a go for urlfetch calls for one project I'm working on this week. Not sure when I'd be able to include it in gaeutiltiies for cron and such, that project is currently lower on my priority list at the moment, but can't wait until I get a chance to play with it. Another idea I had for it is the ROTmodel (retry on timeout model) in the project, which could speed that process up. On Mar 17, 9:11 am, David Wilson d...@botanicus.net wrote: 2009/3/16 Joe Bowman bowman.jos...@gmail.com: Wow that's great. The SDK might be problematic for you, as it appears to be very single threaded, I know for a fact it can't reply to requests to itself. Out of curiosity, are you still using base urlfetch, or is it your own creation? While when Google releases their scheduled tasks functionality it will be less of an issue, if your solution had the ability to fire off urlfetch calls and not wait for a response, it could be a perfect fit for the gaeutilities cron utility. Currently it grabs a list of tasks it's supposed to run on request, sets a timestamp, runs one, the compares now() to the timestamp and if the timedelta is more than 1 second, stops running tasks and finishes the request. It already appears your project would be perfect for running all necessary tasks at once, and the MIT License I believe is compatible with the BSD license I've released gaeutilities, so would you have any personal objection to me including it in gaeutilities at some point, with proper attribution of course? Sorry I missed this in the first reply - yeah work away! :) David If you haven't see that project, it's url ishttp://gaeutilities.appspot.com/ On Mar 16, 11:03 am, David Wilson d...@botanicus.net wrote: Joe, I've only tested it in production. ;) The code should work serially on the SDK, but I haven't tried yet. David. 2009/3/16 Joe Bowman bowman.jos...@gmail.com: Does the batch fetching
[google-appengine] when will the data be deleted?
Hi, GAE ENGINEER: Yu do a great job,but may i ask a few question: 1:assume a module in my application created a 5k reccords in the datastore,but after some time ,the module was diacard, the data will not be used for a long time such as half a year,will the data be deleted by GAE team?and when? 2:is there a tool to export my data in the datastore? thanks so much for ur time to answer my question --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: when will the data be deleted?
Google does not delete your data. Re. exporting data from your datastore, this may be of interest (first result on google for google app engine data export): http://aralbalkan.com/1448 On Mar 18, 10:21 am, Coonay fla...@gmail.com wrote: Hi, GAE ENGINEER: Yu do a great job,but may i ask a few question: 1:assume a module in my application created a 5k reccords in the datastore,but after some time ,the module was diacard, the data will not be used for a long time such as half a year,will the data be deleted by GAE team?and when? 2:is there a tool to export my data in the datastore? thanks so much for ur time to answer my question --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Initializing datastore with binary data
You're probably putting the remote_api handler _after_ your catchall handler. What does your app.yaml file look like? -Nick Johnson On Mar 6, 8:54 pm, Pavel Byles pavelby...@gmail.com wrote: I have no idea why I'm getting errors when I do: import helloworld from google.appengine.ext import db entries = helloworld.Greeting.all().order(-date).fetch(10) and my app.yaml contains: - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin The dev_appserver gives this error: INFO 2009-03-06 20:51:38,287 dev_appserver_index.py] Updating / home/wikid/Code/google_appengine_v2/caribbeanvisit/index.yaml INFO 2009-03-06 20:51:50,570 dev_appserver.py] POST /remote_api? HTTP/1.1 404 - Here's the error: Traceback (most recent call last): File console, line 1, in module File /home/wikid/Code/google_appengine_v2/google/appengine/ext/db/ __init__.py, line 1390, in fetch raw = self._get_query().Get(limit, offset) File /home/wikid/Code/google_appengine_v2/google/appengine/api/ datastore.py, line 942, in Get return self._Run(limit, offset)._Next(limit) File /home/wikid/Code/google_appengine_v2/google/appengine/api/ datastore.py, line 1536, in _Next apiproxy_stub_map.MakeSyncCall('datastore_v3', 'Next', req, result) File /home/wikid/Code/google_appengine_v2/google/appengine/api/ apiproxy_stub_map.py, line 68, in MakeSyncCall apiproxy.MakeSyncCall(service, call, request, response) File /home/wikid/Code/google_appengine_v2/google/appengine/api/ apiproxy_stub_map.py, line 240, in MakeSyncCall stub.MakeSyncCall(service, call, request, response) File /home/wikid/Code/google_appengine_v2/google/appengine/ext/remote_api/remote_api_stub.py, line 169, in MakeSyncCall handler(request, response) File /home/wikid/Code/google_appengine_v2/google/appengine/ext/remote_api/remote_api_stub.py, line 207, in _Dynamic_Next 'remote_datastore', 'RunQuery', request, query_result) File /home/wikid/Code/google_appengine_v2/google/appengine/ext/remote_api/remote_api_stub.py, line 135, in MakeSyncCall request_pb.Encode())) File /home/wikid/Code/google_appengine_v2/google/appengine/tools/ appengine_rpc.py, line 303, in Send f = self.opener.open(req) File /usr/lib/python2.5/urllib2.py, line 387, in open response = meth(req, response) File /usr/lib/python2.5/urllib2.py, line 498, in http_response 'http', request, response, code, msg, hdrs) File /usr/lib/python2.5/urllib2.py, line 425, in error return self._call_chain(*args) File /usr/lib/python2.5/urllib2.py, line 360, in _call_chain result = func(*args) File /usr/lib/python2.5/urllib2.py, line 506, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError: HTTP Error 404: Not Found On Mar 4, 9:18 am, Nick Johnson arach...@notdot.net wrote: You can do what you want withremote_apiand a little custom code. See the article here:http://code.google.com/appengine/articles/remote_api.html -Nick Johnson On Mar 4, 3:04 am, Pavel Byles pavelby...@gmail.com wrote: Is there a way to initialize thedatastorewith binary data to be stored in a blob field (without using a form)? I have tried putting the data into a CSV file and uploading it using bulkloader, but that didn't seem to work. Any help would be appreciated. -- -Pav --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Parallel urlfetch utility class / function.
hey david,joe I've got the async datastore Get working but I'm not sure the callbacks are being run on a background thread. they appear to be when you examine something like the thread local storage (hashes are all unique) but then if you insert just a simple time.sleep they appear to run serially. (note - while not completely new to async code, this is my first run with python so I'm not sure of the threading contentions of something like sleep or logging.debug) I would like to be able to run some code just after the fetch for each entity, the hope is that this would be run in parallel any thoughts? cheers brian On Mar 18, 6:14 am, Joe Bowman bowman.jos...@gmail.com wrote: Ah ha.. thanks David. And for the views, if I really wanted to launch everything at once, I could map my boss, youtube, twitter, etc etc pulls to their own urls, and use megafetch in my master view to pull those urls all at once too. On Mar 18, 5:14 am, David Wilson d...@botanicus.net wrote: Hey Joe, With the gdata package you can do something like this instead: As usual, completely untested code, but looks about right.. from youtube import YouTubeVideoFeedFromString def get_feeds_async(usernames): fetcher = megafetch.Fetcher() output = {} def cb(username, result): if isinstance(output, Exception): logging.error('could not fetch: %s', output) content = None else: content = YouTubeVideoFeedFromString(result.content) output[username] = content for username in usernames: url = 'http://gdata.youtube.com/feeds/api/users/%s/uploads'%\ (username,) fetcher.start(url, lambda result: cb(username, result)) fetcher.wait() return output feeds = get_feeds_async([ 'davemw', 'waverlyflams', 'googletechtalks', 'TheOnion', 'winterelaxation' ]) # feeds is now a mapping of usernames to YouTubeVideoFeed instances, or None if could not be fetched. 2009/3/18 Joe Bowman bowman.jos...@gmail.com: This may be a really dumb question, but.. I'm still learning so... Is there a way to do something other than a direct api call asynchronously? I'm writing a script that pulls from multiple sources, sometimes with higher level calls that use urlfetch, such as gdata. Since I'm attempting to pull from multiple sources, and sometimes multiple urls from each source, I'm trying to figure out if it's possible to run other methods at the same time. For example, I want to pull a youtube entry for several different authors. The youtube api doesn't allow multiple authors in a request (I have a enhancement request in for that though), so I need to do a yt_service.GetYouTubeVideoFeed() for each author, then splice them together into one feed. As I'm also working with Boss, and eventually Twitter, I'll have feeds to pull from those sources as well. My current application layout is using appengine-patch to provide django. I've set up a Boss and Youtube model with get methods that handle getting the data. So I can do something similar to: web_results = models.Boss.get(request.GET['term'], start=start) news_results = models.Boss.get(request.GET['term'], vertical=news, start=start) youtube = models.Youtube.get(request.GET['term'], start=start) Ideally, I'd like some of those models to be able to do asynchronous tasks within their get function, and then also, I'd like to run the above requests at the same, which should really speed the request up. On Mar 17, 9:20 am, Joe Bowman bowman.jos...@gmail.com wrote: Thanks, I'm going to give it a go for urlfetch calls for one project I'm working on this week. Not sure when I'd be able to include it in gaeutiltiies for cron and such, that project is currently lower on my priority list at the moment, but can't wait until I get a chance to play with it. Another idea I had for it is the ROTmodel (retry on timeout model) in the project, which could speed that process up. On Mar 17, 9:11 am, David Wilson d...@botanicus.net wrote: 2009/3/16 Joe Bowman bowman.jos...@gmail.com: Wow that's great. The SDK might be problematic for you, as it appears to be very single threaded, I know for a fact it can't reply to requests to itself. Out of curiosity, are you still using base urlfetch, or is it your own creation? While when Google releases their scheduled tasks functionality it will be less of an issue, if your solution had the ability to fire off urlfetch calls and not wait for a response, it could be a perfect fit for the gaeutilities cron utility. Currently it grabs a list of tasks it's supposed to run on request, sets a timestamp, runs one, the compares now() to the timestamp and if the timedelta is more than 1 second, stops running tasks and finishes the
[google-appengine] Data model in folder
I have placed my data model in a separate folder. For example: DataModels/AccountData.py Now I want to import it into my main controller. I'm trying: from DataModels.AccountData import Accounts it give me this error when I try to run it: *type 'exceptions.ImportError'*: No module named AccountData args = ('No module named AccountData',) message = 'No module named AccountData' What am I doing wrong. Can someone help? thx --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] BadValueError: phone must not be empty.
I am trying to use the bulk loader but am having trouble with it. This is my code: modules.py: from google.appengine.ext import db class Installs(db.Model): status = db.StringProperty() scheduled_date = db.DateProperty() customer_name = db.StringProperty() contractor_name = db.StringProperty() phone = db.PhoneNumberProperty(default='not provided') address = db.StringProperty() city = db.StringProperty() door_size_type = db.TextProperty() door_color = db.StringProperty() tech_assigned = db.StringProperty() main.py: import datetime import models from google.appengine.ext import bulkload from google.appengine.api import datastore_types from google.appengine.ext import search class PersonLoader(bulkload.Loader): def __init__(self): # Our 'Person' entity contains a name string and an email bulkload.Loader.__init__(self, 'Installs', [('status', str), ('scheduled_date', str), ('customer_name', str), ('contractor_name', str), ('phone', datastore_types.PhoneNumber), ('address', str), ('city', str), ('door_size_type', datastore_types.Text), ('door_color', str), ('tech_assigned', str) ]) def HandleEntity(self, entity): ent = search.SearchableEntity(entity) return ent if __name__ == '__main__': bulkload.main(PersonLoader()) When i try to run the bulk loader it fales when i get to a row that has an empty phone number: Loading from line 1...done. Loading from line 2...error: Traceback (most recent call last): File C:\Program Files\Google\google_appengine\google\appengine\ext \bulkload\_ _init__.py, line 366, in LoadEntities new_entities = loader.CreateEntity(columns, key_name=key_name) File C:\Program Files\Google\google_appengine\google\appengine\ext \bulkload\_ _init__.py, line 228, in CreateEntity entity[name] = converter(val) File C:\Program Files\Google\google_appengine\google\appengine\api \datastore_ types.py, line 746, in __init__ ValidateString(phone, 'phone') File C:\Program Files\Google\google_appengine\google\appengine\api \datastore_ types.py, line 100, in ValidateString raise exception('%s must not be empty.' % name) BadValueError: phone must not be empty. ERROR2009-03-18 08:36:16,125 bulkload_client.py] Import failed I am trying to give it a default value of something but obviously i am doing something wrong.. Can someone give me a hand? Thanks. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: IDE
Don't think so, you can use either PyDev for eclipse, Eric4 or Komodo On Wed, Mar 18, 2009 at 2:03 PM, Ronn Ross ronn.r...@gmail.com wrote: Will google release an IDE for app engine? --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Data model in folder
Hi, Be sure to include an __init__.py file in the DataModels folder. -Marzia On Wed, Mar 18, 2009 at 6:22 AM, Ronn Ross ronn.r...@gmail.com wrote: I have placed my data model in a separate folder. For example: DataModels/AccountData.py Now I want to import it into my main controller. I'm trying: from DataModels.AccountData import Accounts it give me this error when I try to run it: *type 'exceptions.ImportError'*: No module named AccountData args = ('No module named AccountData',) message = 'No module named AccountData' What am I doing wrong. Can someone help? thx --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Data model in folder
hi ronn, to access a folder in python (using import) you must place an empty __init__.py file inside that DataModels folder. this tells python that this folder as a package. regards iham On Mar 18, 2009, at 2:22 PM, Ronn Ross wrote: I have placed my data model in a separate folder. For example: DataModels/AccountData.py Now I want to import it into my main controller. I'm trying: from DataModels.AccountData import Accounts it give me this error when I try to run it: type 'exceptions.ImportError': No module named AccountData args = ('No module named AccountData',) message = 'No module named AccountData' What am I doing wrong. Can someone help? thx --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: new Open source proj -- for login, remember me, security, usability functionality -- adrian remembers
Is it built over the Google authentication API's or have you reimplemented a thisapp-owned authentication system? On 16 Mar, 15:44, Adrian Scott . com goo...@adrianscott.com wrote: Get your app started very quickly with this free code... for membership capability http://www.adrianremembersme.com/ Version 0.1.1 currently offers basic login, remember me functionality ( + photo upload for profile ) Attempting to follow and encode best practices for cookies, security, etc. Let's stop re-inventing the wheel ;) On the roadmap -- advanced security features (e.g. handling when someone's trying to hack a pwd, save yourself! from Twitter's recent celeb hack embarassment), usability enhancements (ooh aah) Please come and Kick the Tires... and tell us what you really think! http://www.adrianremembersme.com/ http://code.google.com/p/adrianremembersme/ http://adrianremembersme.appspot.com/ recruiting developers, soon will be posting bounties for little upgrades... great code for new developers to start poking around with! --- i couldn't find anything else that really provided all this in one bundle, according to most current best practices, etc. we can put together a django version of this at some point too... --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] GAE Access In China
GAE Team: I am a developer considering using AppEngine for a new web based business aimed at the Chinese market. I've recently spent a lot of time getting up to speed on Python and learning absolutely everything about AppEngine so can I dive head first into building my app, which I expect to take several months. GAE seems pretty awesome and I can't wait to get going. However in the last few days access in Guangzhou, China (where I live) has been spotty, I assume because the gov't is for whatever reason is blocking the GAE IP addresses. Should my app become popular I was hoping to turn it into my primary source of income. Given the problems recently, it seems like I might not be able to use GAE. If have a lot of users who depend on my site to do mission critical business (which is what cloud computing is all about!), and then one day I wake up to find GAE is arbitrarily blocked, that would be disastrous. I know Google must have relationships with high level officials in the Chinese gov't and could use influence to make sure GAE never gets blocked. I've never once had problems getting on Baidu.com, so there must be a way to make sure it won't be blocked. I'm from America and I know we never think about these kind of issues, but over here its a complete reality, and now for me its turned into a business decision. What gaurantee do I have that GAE won't be blocked in the future? Should I use it to build a web based business? Thanks! --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] uploading google application
I want to upload a helloworld application just for testing; when I followed the process... as directed. After entering username and password. At the end of message says You do not have permission.. Please suggest what is the reason --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: UpLoading Problem
and I did modify my app.yaml file: application: registry-xm version: 1 runtime: python api_version: 1 handlers: - url: /.* script: registry-xm.py --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: UpLoading Problem
Oops. I forgot to say .. I did delete the .appcfg files before running the test. The .appcfg_cookies file was re-created by the test. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: UpLoading Problem
I'm having a similar problem trying to upload a new application. I have uploaded to another application where I am an admin, but not the owner, and everything works nicely. I am now trying for the first time to create an application in my own account. Here are the steps: 1) Wrote a simple app, following the 'helloworld' tutorial at http://code.google.com/appengine/docs/python/gettingstarted/helloworld.html but naming the project 'registry-xm' instead of 'helloworld'. Everything works on the local dev_appserver. 2) Set up an appengine account at http://appengine.google.com/permissions/smssend. Got the verification code on my cellphone, entered it in the registration form, and registered the project 'registry-xm'. No signs of trouble, but I didn't see any confirmation email. 3) Tried to upload the project with this command: appcfg.py update registry-xm/ Scanning files on local disk. Initiating update. - - - HTTPError: HTTP Error 403: Forbidden Error 403: --- begin server output --- You do not have permission to modify this app (app_id=u'registry-xm'). 4) Look at project with Dashboard http://appengine.google.com/ signed in as macquigg at box67.com Applications: py-bat pywhip registry-xm is missing!! 5) Try to re-create it. Asked again to verify account by SMS. Cannot do that. It says my account is already verified!!! Help will be greatly appreciated. -- Dave --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Data model in folder
I added a blank __init__.py file in my DataModels folder and I receive this: *type 'exceptions.TypeError'*: __init__() got an unexpected keyword argument 'Required' args = (__init__() got an unexpected keyword argument 'Required',) message = __init__() got an unexpected keyword argument 'Required' Do I have to add anything to the __init__.py file? On Wed, Mar 18, 2009 at 11:54 AM, Hilbert Markus hilbert.mar...@gmail.comwrote: hi ronn, to access a folder in python (using import) you must place an empty __init__.py file inside that DataModels folder. this tells python that this folder as a package. regards iham On Mar 18, 2009, at 2:22 PM, Ronn Ross wrote: I have placed my data model in a separate folder. For example: DataModels/AccountData.py Now I want to import it into my main controller. I'm trying: from DataModels.AccountData import Accounts it give me this error when I try to run it: *type 'exceptions.ImportError'*: No module named AccountData args = ('No module named AccountData',) message = 'No module named AccountData' What am I doing wrong. Can someone help? thx --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Data model in folder
I apologize for the previous message. I figure out the issue. Although I'm am still receiving this error: *type 'exceptions.ImportError'*: cannot import name Accounts args = ('cannot import name Accounts',) message = 'cannot import name Accounts' I added the __init__.py file and I'm using this line to include it: from DataModels.AccountData import Accounts Thanks. On Wed, Mar 18, 2009 at 12:37 PM, Ronn Ross ronn.r...@gmail.com wrote: I added a blank __init__.py file in my DataModels folder and I receive this: *type 'exceptions.TypeError'*: __init__() got an unexpected keyword argument 'Required' args = (__init__() got an unexpected keyword argument 'Required',) message = __init__() got an unexpected keyword argument 'Required' Do I have to add anything to the __init__.py file? On Wed, Mar 18, 2009 at 11:54 AM, Hilbert Markus hilbert.mar...@gmail.com wrote: hi ronn, to access a folder in python (using import) you must place an empty __init__.py file inside that DataModels folder. this tells python that this folder as a package. regards iham On Mar 18, 2009, at 2:22 PM, Ronn Ross wrote: I have placed my data model in a separate folder. For example: DataModels/AccountData.py Now I want to import it into my main controller. I'm trying: from DataModels.AccountData import Accounts it give me this error when I try to run it: *type 'exceptions.ImportError'*: No module named AccountData args = ('No module named AccountData',) message = 'No module named AccountData' What am I doing wrong. Can someone help? thx --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Data model in folder
by your import statement i guess you have the following structure: DataModels/ __init__.py AccountData.py inside AccountData.py is a class or even method with the name Accounts defined. is that correct? regards iham On Mar 18, 2009, at 5:52 PM, Ronn Ross wrote: I apologize for the previous message. I figure out the issue. Although I'm am still receiving this error: type 'exceptions.ImportError': cannot import name Accounts args = ('cannot import name Accounts',) message = 'cannot import name Accounts' I added the __init__.py file and I'm using this line to include it: from DataModels.AccountData import Accounts Thanks. On Wed, Mar 18, 2009 at 12:37 PM, Ronn Ross ronn.r...@gmail.com wrote: I added a blank __init__.py file in my DataModels folder and I receive this: type 'exceptions.TypeError': __init__() got an unexpected keyword argument 'Required' args = (__init__() got an unexpected keyword argument 'Required',) message = __init__() got an unexpected keyword argument 'Required' Do I have to add anything to the __init__.py file? On Wed, Mar 18, 2009 at 11:54 AM, Hilbert Markus hilbert.mar...@gmail.com wrote: hi ronn, to access a folder in python (using import) you must place an empty __init__.py file inside that DataModels folder. this tells python that this folder as a package. regards iham On Mar 18, 2009, at 2:22 PM, Ronn Ross wrote: I have placed my data model in a separate folder. For example: DataModels/AccountData.py Now I want to import it into my main controller. I'm trying: from DataModels.AccountData import Accounts it give me this error when I try to run it: type 'exceptions.ImportError': No module named AccountData args = ('No module named AccountData',) message = 'No module named AccountData' What am I doing wrong. Can someone help? thx --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: IDE
On 18 Mar, 13:03, Ronn Ross ronn.r...@gmail.com wrote: Will google release an IDE for app engine? What for? A multi-language editor with multiple syntax highlighting should be enough. Maybe emacs/vi or kate/komodo on Linux and Smultron, TextMate or maybe even XCode on Os X Not sure about Windows, though --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] App Engine Patch - dumpdata then loaddata
I'm having a problem with my App Engine Patch project where if I dumpdata from my app engine server using: ./manage.py dumpdata --format json data.json Then reset the servers data: ./manage.py reset And then try to reload that data: ./manage.py loaddata data.json I get complaints about Date properties not being datetime objects. I've read about some similar sounding issues with the deserializer used by Django, but these are from last summer or before, and they appear to have solutions. Any idea what I'm doing wrong? Incidentially, I have to remove the first line Running on app-engine- patch 1.0 from data.json. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Transcript: App Engine chat time March 18
[09:06] scudder_google Hey everyone, we're ready to start another hour long chat session. [09:08] scudder_google We have some Googlers here, myself, jason_google, jcgregorio_google, dan_google, nickjohnson, and some others may jump on a bit later [09:09] Wooble ok, I knew this channel was dead when these chats weren't going on... [09:09] scudder_google ribrdb is here from Googler too :) [09:10] dan_google Anyone want to plug their App Engine site? [09:10] dan_google And by plug I mean promote. :) [09:10] knoonan Hi guys, apart from housekeeping on the datastore, do you anticipate that remote_api will be used to enable desktop applications which use BigTable as a datastore? [09:11] dan_google knoonan: That's a fine idea, I don't see why not. [09:12] HighBit hey guys. just saw jcg mention the chat on twitter. so what's new w/ app engine? :) [09:12] bFlood @dan_google - but they would need your admin logon for remote_api right? [09:12] scudder_google knoonan and bFlood: actually I don't think admin login is required [09:12] dan_google bFlood: Yeah, to use remote_api directly you would. Or another admin account. [09:13] dan_google bFlood: You can always set up the remote_api handler to not have admin protection. Not sure if that's a good idea. [09:13] dan_google In general, it's probably better to build just the web service end points the desktop application needs. [09:13] Wooble maybe hack the handler to do its own authentication? [09:14] Wooble whether that's significantly better than using a RESTful interface I have no idea... [09:15] bFlood Wooble - yea, I kinda came to the same conclusion. just use a RESTful endpoint instead, easier to work with [09:15] bFlood but at first I thought remote_api would be great for desktop to connect in [09:16] Wooble well, it would allow you more flexibility in what your desktop app would be able to do without deploying a new version of the server side app, definitely. [09:16] scudder_google knoonan and bFlood: I was wrong :) the remote API handler checks for an admin even if login:admin is not specified in app.yaml [09:16] dan_google bFlood: If your end points would essentially expose the same functionality, I don't see a problem. But for most apps I can imagine, you'd want custom partitioning of the datastore on a per-user basis, enforced by the endpoints and some auth. [09:17] dan_google But Google Accounts might be sufficient auth. [09:17] dan_google (I retract my statement about admin-less remote_api as well, then. :) ) [09:18] bFlood dan_google - google accounts auth seemed to work best for our scenario [09:18] bFlood maybe offtopic but do the callbacks for the future async urlfetch/datastore run on independent threads? [09:19] dan_google I'm not aware of any plans to do async urlfetch/ datastore. Where is that from? [09:19] bFlood pubsubhub codebase [09:20] bFlood this forum post has more info: http://tinyurl.com/d3uton [09:21] HighBit I noticed jaiku uses jabber (via gtalk) -- I haven't looked at the code, has anyone looked at that? [09:21] HighBit I'm curious how they integrated jabber with app engine [09:21] dan_google My understanding is that pubsubhub is using all public features, and I'm not aware of any async urlfetch/datastore. Can you point to a spot in there that looks like it's doing async? [09:21] bFlood async_apiproxy.py [09:23] bFlood it does seem to work for urlfetch (see the MegaFetcher example from the post above) and it also seems to work for datastore [09:23] scudder_google HighBit: We are planning to make an XMPP API available publicly at some point in the next several months [09:23] scudder_google HighBit: as noted on our roadmap [09:23] HighBit ah. [09:24] bFlood but I cant tell if the callbacks are run on real background threads (or just the datastore fetch) [09:25] scudder_google HighBit: I'm not sure about Jaiku's implementation though, but you can check out the source code http://code.google.com/p/jaikuengine [09:26] dan_google bFlood: I'll have to look into it and get back to you. [09:26] knoonan I'll plug a friend's app: LongURLPlease by Darragh Curran. For all of those tiny URLs we encounter--it automatically expands them so you know where a click will take you... [09:26] HighBit scudder_google: yea, I wanted to, haven't gotten aronud to looking at their code yet. I think it's pretty nifty that it was open sourced though. [09:27] HighBit I hope they have at least some testing in there; I want to see some app engine tests in action [09:27] bFlood dan_google - ok, thanks. it would be a nice addition. I would be using the same CPU per request, just in parallel instead of serially (I guess you could argue either way as to which is better for GAE's scalability) [09:28] MBoffin knoonan, I turn on TinyURL's preview feature. That way TinyURL won't auto-redirect me. First it shows me where it will take me. But LongURLPlease sounds cool because not all of those URL services give you a preview mode. [09:28] knoonan It's available as a
[google-appengine] Re: App Engine Patch - dumpdata then loaddata
If I try using a different serializer (yaml) I get this complaint: Error: Unable to serialize database: cannot represent an object: s...@localhost So json doesn't like date formats, and yaml doesn't like the email address field. Anyone know whats up here? THanks Stu --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: uploading google application
You need to create an application in the web interface, and use the same application ID in your app.yaml. On Mar 18, 8:34 am, info.e...@gmail.com info.e...@gmail.com wrote: I want to upload a helloworld application just for testing; when I followed the process... as directed. After entering username and password. At the end of message says You do not have permission.. Please suggest what is the reason --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Data Storage Size - multiplier per object
Hi Marzia, Just want to add my voice to the chorus of people looking for a little more transparency in terms of data storage and entities. In my ideal fantasy world I'd be able to see a pie chart that would break down the percentage of storage that each of my entities was using as a fraction of the total storage used. Clicking on an entity's slice in the pie would bring up another pie chart that would show the fraction of storage used by that entity's primary store and each of its indices. (This second chart may not be necessary once you guys have published some more info on exactly how different properties and indices manifest themselves on disk.) Thanks in advance, Ben On Mar 13, 9:57 am, Marzia Niccolai ma...@google.com wrote: Hi, There is no 'multiplier' per se on datastore storage. The issue is that we account for both the size of the data stored and the space taken by the indices for this data. As such, the amount of storage you use depends specifically on the types of indexes your application has. We are working on getting better documentation together that will give you a good idea on how you can account for the amount of storage an entity will take. Please note that the FAQ on this subject currently is _not_ correct and we will be updating it. -Marzia On Tue, Mar 10, 2009 at 9:28 AM, Jonathan Ultis jonathan.ul...@gmail.comwrote: I created a model with fixed content that requires ~250b serialized, including all field names, the key, and the kind name, and parent (None). I added 312000 of those to the datastore, for 75 megs of raw data. There are 8 indexable fields, The indices should require no more than 176 megs of additional space, if the indices don't do any sort of column compression. That's 250 megs of raw space. But, the data store reports 1GB of space used. That suggests perhaps 2x redundancy, plus a 50% fill rate in big table. Or, maybe just 4x redundancy. No idea. Anyhow, for now, take your raw object size including kind, key, field names, and field content, and multiply by 10x-15x, depending on how many indexable properties you have, to get your final storage size. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Embedded graphics and other content in e-mail. (the cid: thing in e-mails) rfc2387
It would be nice if google app engine would add another param next to the attachaments one, containing multipart/related attachments (hidden attachements for use in content, for example embedding graphics within the e-mail to avoid having the e-mail client connect to the internet/some website to retrieve e-mail graphics) http://www.ietf.org/rfc/rfc2387.txt --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Datastore Management
GAE Beginner here. What is the easiest way to manage the datastore. I want to purge some of the datastore contents then load some test data. I would like a command line type interface. I tried the app engine console, but it causes a compiler error and won't run. http://www.proven-corporation.com/software/app-engine-console/ Advice?? --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Is there a way to get the Clients screen size with Appengine?
Excuse my ignorance...but how do I get the values for width and height into Python/Appengine? On Mar 18, 5:46 am, iceanfire iceanf...@gmail.com wrote: var myWidth = 0, myHeight = 0; if( typeof( window.innerWidth ) == 'number' ) { //Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; } else if( document.documentElement ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myWidth = document.documentElement.clientWidth; myHeight = document.documentElement.clientHeight; } else if( document.body ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myWidth = document.body.clientWidth; myHeight = document.body.clientHeight; } On Mar 17, 6:53 pm, jago java.j...@gmail.com wrote: I am a total Javascript agnostic. I guess you do not have some example Python/Javascript code? --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Is there a way to get the Clients screen size with Appengine?
I did find something, but most was very old, as old as 2001. My problem is not to find something but not being sure if it works in 99% of the browsers. That's why I prefer the advice of somebody who dealt with that sort of thing for years. On Mar 18, 1:57 am, Andrew Badera and...@badera.us wrote: www.google.combuddy. this is old school easy stuff. don't be lazy. On Tue, Mar 17, 2009 at 8:53 PM, jago java.j...@gmail.com wrote: I am a total Javascript agnostic. I guess you do not have some example Python/Javascript code? --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] from google.appengine.ext
Hi, I need information about google.appendine.ext, some link? Thank´s Gustavo. Argentina. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: What can I use memcache for?
Having a read of the docs would be a good idea, as all this is documented, but you must serialise the data T On Mar 19, 4:19 am, Khai khaitd...@gmail.com wrote: Can I use memcache to a python array? Do I need to serialize the data before putting it into the cache? Can I use memcache to cache a model instance? Thanks! --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Please copy the logging functionality of the Administration Console to the Development Console
According to http://code.google.com/appengine/articles/logging.html, live apps can log information and have it displayed in the Administration Console. Is it possible to copy this functionality to the Development Console? I am aware that I can append ?debug to my URL, however, my application does a JSON request, and dev_appserver.py destroy my JSON object by appending: !-- Copyright 2007 Google Inc. All Rights Reserved -- !-- The below HTML code was generated and appended by Google. It's purpose is to display a logging console in the browser. It's appearing here because either: (a) the CGI parameter debug was in the URL (b) the cookie _ah_severity was present in the HTTP request To stop this from being appended, you should remove the CGI parameter debug from the request URL and then either click the Close link on the logging console, or delete the _ah_severity cookie. All element ids used by the code for this logging console are prefixed with _ah, all cookies used are prefixed with _ah, and all classes and functions are in the namespace AH. -- div id=_ah_base style=z-index: 9; position: absolute; right: 10px; background-color: white; color: black; width: 600px; border: 1px solid black; padding: 10px; font-family: courier; font-size: medium; margin: 10px; tabletrtd table cellspacing=0 cellpadding=0 rules=all border=frame tr td style=background-color: white; cursor: pointer; height: 15px; width: 15px; id=_ah_up_left onClick=(new AH.LoggingConsole).moveBaseDiv('up_left')/ td td style=background-color: white; cursor: pointer; height: 15px; width: 15px; id=_ah_up_right onClick=(new AH.LoggingConsole).moveBaseDiv ('up_right')/td /tr tr td style=background-color: white; cursor: pointer; height: 15px; width: 15px; id=_ah_down_left onClick=(new AH.LoggingConsole).moveBaseDiv ('down_left')/td td style=background-color: white; cursor: pointer; height: 15px; width: 15px; id=_ah_down_right onClick=(new AH.LoggingConsole).moveBaseDiv ('down_right')/td /tr /table /tdtd valign=top nbsp;nbsp;nbsp;nbsp;nbsp; a id=_ah_show_debug href=javascript:(new AH.LoggingConsole).changeLogSeverity ('debug') DEBUG/a a id=_ah_show_info href=javascript:(new AH.LoggingConsole).changeLogSeverity ('info') INFO/a a id=_ah_show_warning href=javascript:(new AH.LoggingConsole).changeLogSeverity ('warning') WARNING/a a id=_ah_show_error href=javascript:(new AH.LoggingConsole).changeLogSeverity ('error') ERROR/a a id=_ah_show_critical href=javascript:(new AH.LoggingConsole).changeLogSeverity ('critical') CRITICAL/a nbsp;nbsp;nbsp;nbsp;nbsp; a id=_ah_close href=javascript:(new AH.LoggingConsole).closeEverything ()Close/a /td/tr/table div id=_ah_loglines style=margin: 10px; height: 300px; overflow: auto; /div /div script // Copyright 2007 Google Inc. // All Rights Reserved. // Licensed under the Apache License, Version 2.0 (the License); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an AS IS BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview Defines the code for the application logging console. */ /** * The namespace we're using for all javascript classes and functions related * to the logging console. */ var AH = {}; /** * A collection of utility functions for reading and writing cookies. * @constructor */ AH.CookieUtil = function() {}; /** * Creates and adds a cookie with the specified expiration. * @param {String} name The name of the desired cookie. * @param {String} value The value of the desired cookie. * @param {Number} opt_days If non-negative, the expiration time in days of the * desired cookie. If not provided, the default value is 1. */ AH.CookieUtil.prototype.setCookie = function(name, value, opt_days) { if (opt_days == null) { opt_days = 1; } var expires = ''; if (opt_days 0) { var date = new Date; date.setTime(date.getTime() + (opt_days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toGMTString(); } document.cookie = name + '=' + value + expires + '; path=/'; }; /** * Returns the value of the requested cookie if it is available, and otherwise * returns a default value. * @param
[google-appengine] application configuration file not found
hi i made a test app just to play with it and when i try to run the webserver cmd tells me ERROR:root:application configuration file not found in my selected directory i am running windows XP (pro) with the newest python please if you have an answer post it here or send me an email at jos...@circusjoshua.com --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: GAE Access In China
I know Google must have relationships with high level officials in the Chinese gov't and could use influence to make sure GAE never gets blocked. Why do you think that is true? I've been in China for almost 2 years now, and while I am no expert on the country, I have a good idea of how things work here. The reason I'm pretty sure Google has high level contacts in the Chinese gov't is because I'm pretty sure EVERY major multi-national operating in China has a relationship with the gov't. Foreigners can't just show up over here and set up shop. There is a mind numbing bureacracy that controls everything and the way to make things happen isn't necessarily through direct bribery, but through personal relationships with local officials. Expensive dinners and nights singing kareoke are what makes world work. There is no doubt Google as well as every other company making big bets on China frequently interact Chinese officials. I'm sure this is especially true in the realm of the GFW (Great Firewall), where Google must agree to play by the local rules or get shut off altogether. Even the contents of this post, if were in Chinese, would be grounds for blocking. The only problem is that the people deciding what gets blocked have absolutely no concern for a group of coders working on their own personal projects. As crazy as it may seem, the best way for those of in China to be able to develop for GAE without getting blocked is most likely someone from Google going out for a night of drinking and kareoke with someone that controls what gets blocked. I've never once had problems getting on Baidu.com, so there must be a way to make sure it won't be blocked. Baidu.com is a Chinese company, headquartered in China. Why would you think that Baidu's relationship with the Chinese government has anything to do with Google's relationship? Because Baidu and Google are the #1 and #2 (in that order) most popular search engines in China. They both have a relationship with the gov't, and it seems that Baidu's is stronger because they never get blocked. Now, I also know that the gov't will usually support local companies against foreign compitition. Also, since Baidu is Chinese they are most likely more self policiing when it come to objectionable content, and they certainly don't have any kind don't be evil clauses in their mission statement. For these reasons Baidu has a natural advantage in not getting blocked. But seeing that Google is a major player in Chinese internet search business, it seems like they would be doing more to make sure their site, including GAE, is 100% usable, all the time, no questions asked. If it doesn't have that, then I can't base a business aimed at the Chinese on GAE, which I find incredibly dissappointing, because so far GAE looks really cool. On Mar 19, 7:59 am, Andy Freeman ana...@earthlink.net wrote: On Mar 18, 4:26 am, John C johnmcourt...@gmail.com wrote: GAE Team: I am a developer considering using AppEngine for a new web based business aimed at the Chinese market. I've recently spent a lot of time getting up to speed on Python and learning absolutely everything about AppEngine so can I dive head first into building my app, which I expect to take several months. GAE seems pretty awesome and I can't wait to get going. However in the last few days access in Guangzhou, China (where I live) has been spotty, I assume because the gov't is for whatever reason is blocking the GAE IP addresses. Should my app become popular I was hoping to turn it into my primary source of income. Given the problems recently, it seems like I might not be able to use GAE. If have a lot of users who depend on my site to do mission critical business (which is what cloud computing is all about!), and then one day I wake up to find GAE is arbitrarily blocked, that would be disastrous. I know Google must have relationships with high level officials in the Chinese gov't and could use influence to make sure GAE never gets blocked. I've never once had problems getting on Baidu.com, so there must be a way to make sure it won't be blocked. I'm from America and I know we never think about these kind of issues, but over here its a complete reality, and now for me its turned into a business decision. What gaurantee do I have that GAE won't be blocked in the future? Should I use it to build a web based business? Thanks! --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] basic login functionality; jump-start your next app quickly; 'adrian remembers me' upgrade 0.1.4 released
having fun in a variety of areas: - email validation, the rabbit hole gets deeper; put some initial validation in place, want to revisit later/soon for a better/more complete solution(s) - i think the 'remember me' cookie design is reasonably elegant, though could be worth sprucing up a little; check out how we implemented (2 good links to other writings on the topic on the code homepage below) looking forward to getting to: - the issue of funny unicode characters in usernames --- cookie interactions. whee! inching forward here steadily, several features put into place with new 0.1.4 version: checks for valid email address, minimum password length, username not already used, email not already used, logs in new member when they create membership, ... the code is coming together nicely. use this code to jumpstart your next app (or tell me why it wouldn't be of use to you ;) check it out and let me know what your biggest needs are! http://www.adrianremembersme.com/ thanks, adrian --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: from google.appengine.ext
Gustavo, google.appengine.ext contains a number of things not the least of which is the datastore api. You will probably have the most success searching the group archives. Ian On Thu, Mar 19, 2009 at 8:18 AM, Lord Gustavo Miguel Angel goosfanc...@gmail.com wrote: Hi, I need information about google.appendine.ext, some link? Thank´s Gustavo. Argentina. -- === 株式会社ビープラウド イアン・ルイス 〒150-0012 東京都渋谷区広尾1-11-2アイオス広尾ビル604 email: ianmle...@beproud.jp TEL:03-5795-2707 FAX:03-5795-2708 http://www.beproud.jp/ === --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: This application ID or version is already in use. Why?
why not use the domain (dituren.cn/dituren.com) accessing your app directly? On Mar 18, 2:48 pm, K_Reverter kunhua...@gmail.com wrote: I hope to use dituren.appspot.com as my app id very much.Because I already registered dituren-mapplet.appspot.com,dituren- service.appspot.com and dituren-www.appspot.com. Also I'm the owner of domain dituren.cn and dituren.com. I tried send mail to ditu...@gmail.com and d1tu...@gmail.com and the Gmail server return a error. So I think I can use this appid, Can you tell me why dituren was reserved? On Mar 11, 12:13 am, Marzia Niccolai ma...@google.com wrote: Hi, Yes, it has already been reserved. -Marzia On Tue, Mar 10, 2009 at 6:04 AM, K_Reverter kunhua...@gmail.com wrote: But I don't think anyone already reserved d1turen or dituren as Gmail username or Appspot Id. Can anyone tell me why dituren is reserved? On 3月10日, 上午2时43分, Marzia Niccolai ma...@google.com wrote: Hi, This is a known issue with the 'Check availability' functionality. Gmail and App Engine share the same namespace, but in Gmail when you reserve eg d1turen, dituren is also reserved. The Check availability function does not correctly check for this case. So if you get the message 'This application ID or version is already in use' you will not be able to reserve the id. -Marzia On Mon, Mar 9, 2009 at 6:11 AM, K_Reverter kunhua...@gmail.com wrote: When I create create an application as dituren.appspot.com I got a 400 error This application ID or version is already in use. But when I click the Check availability , I got a message Yes, dituren is available! Why? Please help me!- 隐藏被引用文字 - - 显示引用的文字 -- Hide quoted text - - Show quoted text - --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: GAE Access In China
I've been in China for almost 2 years now, and while I am no expert on the country, I have a good idea of how things work here. The reason I'm pretty sure Google has high level contacts in the Chinese gov't is because I'm pretty sure EVERY major multi-national operating in China has a relationship with the gov't. Having a relationship with the Chinese govt does not imply that one can always get what one wants from the Chinese govt. On Mar 18, 6:05 pm, John C johnmcourt...@gmail.com wrote: I know Google must have relationships with high level officials in the Chinese gov't and could use influence to make sure GAE never gets blocked. Why do you think that is true? I've been in China for almost 2 years now, and while I am no expert on the country, I have a good idea of how things work here. The reason I'm pretty sure Google has high level contacts in the Chinese gov't is because I'm pretty sure EVERY major multi-national operating in China has a relationship with the gov't. Foreigners can't just show up over here and set up shop. There is a mind numbing bureacracy that controls everything and the way to make things happen isn't necessarily through direct bribery, but through personal relationships with local officials. Expensive dinners and nights singing kareoke are what makes world work. There is no doubt Google as well as every other company making big bets on China frequently interact Chinese officials. I'm sure this is especially true in the realm of the GFW (Great Firewall), where Google must agree to play by the local rules or get shut off altogether. Even the contents of this post, if were in Chinese, would be grounds for blocking. The only problem is that the people deciding what gets blocked have absolutely no concern for a group of coders working on their own personal projects. As crazy as it may seem, the best way for those of in China to be able to develop for GAE without getting blocked is most likely someone from Google going out for a night of drinking and kareoke with someone that controls what gets blocked. I've never once had problems getting on Baidu.com, so there must be a way to make sure it won't be blocked. Baidu.com is a Chinese company, headquartered in China. Why would you think that Baidu's relationship with the Chinese government has anything to do with Google's relationship? Because Baidu and Google are the #1 and #2 (in that order) most popular search engines in China. They both have a relationship with the gov't, and it seems that Baidu's is stronger because they never get blocked. Now, I also know that the gov't will usually support local companies against foreign compitition. Also, since Baidu is Chinese they are most likely more self policiing when it come to objectionable content, and they certainly don't have any kind don't be evil clauses in their mission statement. For these reasons Baidu has a natural advantage in not getting blocked. But seeing that Google is a major player in Chinese internet search business, it seems like they would be doing more to make sure their site, including GAE, is 100% usable, all the time, no questions asked. If it doesn't have that, then I can't base a business aimed at the Chinese on GAE, which I find incredibly dissappointing, because so far GAE looks really cool. On Mar 19, 7:59 am, Andy Freeman ana...@earthlink.net wrote: On Mar 18, 4:26 am, John C johnmcourt...@gmail.com wrote: GAE Team: I am a developer considering using AppEngine for a new web based business aimed at the Chinese market. I've recently spent a lot of time getting up to speed on Python and learning absolutely everything about AppEngine so can I dive head first into building my app, which I expect to take several months. GAE seems pretty awesome and I can't wait to get going. However in the last few days access in Guangzhou, China (where I live) has been spotty, I assume because the gov't is for whatever reason is blocking the GAE IP addresses. Should my app become popular I was hoping to turn it into my primary source of income. Given the problems recently, it seems like I might not be able to use GAE. If have a lot of users who depend on my site to do mission critical business (which is what cloud computing is all about!), and then one day I wake up to find GAE is arbitrarily blocked, that would be disastrous. I know Google must have relationships with high level officials in the Chinese gov't and could use influence to make sure GAE never gets blocked. I've never once had problems getting on Baidu.com, so there must be a way to make sure it won't be blocked. I'm from America and I know we never think about these kind of issues, but over here its a complete reality, and now for me its turned into a business decision. What gaurantee do I have that GAE won't be blocked in the future? Should I
[google-appengine] Re: UpLoading Problem
I've found the problem, or at least narrowed it down. I verified my account a second time, using a friend's cellphone, set up a new app 'xm-registry', and now everything seems to work. Seems like the previous Verify Account got stuck, and was not allowing me to access the app 'registry-xm' or start over. Seems like creating an new app should be an all-or-nothing transaction. I'll start another thread on this when I get some time. -- Dave --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Please critique
I have this code: peoples = memcache.get(first) if people is not None: peoples = pickle.loads(peoples) else: peoples = People.gql(WHERE first = :first, first = first) memcache.set(first,peoples) peoples = memcache.get(first) peoples = pickle.loads(peoples) for p in peoples: key_as_str = str(p.key()) which seems to work. Has anyone done anything like this? Can you comment on why it works (I am very novice when it comes to Python)? Is there anything I need to watch out for when doing something like this? Is this even advisable / proper? Thanks! --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Can I query to find out the children entities of a Parent entity?
anyone? On Mar 16, 1:09 pm, iceanfire iceanf...@gmail.com wrote: Also, now when I ran the following code in the console: from google.appengine.ext import db key_of_specific_Thumb_entity = agdhcHRydXNochALEgpJbWFnZVRodW1iGEUM ==key grabbed from datastore for thumbnail (which is a parent of the Bin/Large Image) db.get(db.Key(key_of_specific_Thumb_entity)) I get this error: Traceback (most recent call last): File C:\Program Files\Google\google_appengine\google\appengine\ext \admin\__init__.py, line 194, in post exec(compiled_code, globals()) File string, line 5, in module File C:\Program Files\Google\google_appengine\google\appengine\ext \db\__init__.py, line 1053, in get cls1 = class_for_kind(entity.kind()) File C:\Program Files\Google\google_appengine\google\appengine\ext \db\__init__.py, line 217, in class_for_kind raise KindError('No implementation for kind \'%s\'' % kind) KindError: No implementation for kind 'ImageThumb' I'm guessing it has something to do with it being a parent or something!? On Mar 16, 1:03 pm, iceanfire iceanf...@gmail.com wrote: Hi, I'm having a bit of trouble understanding how to use parents/children properties within transactions. I have divided up my Thumbnails and the actual Large Image into two separate models to save processing power, but when I upload, I want to make sure that both entities are updated--therefore I have to use transactions. Short version (incase the answer is something simple): == Can I query to find out the children entities of a Parent entity? Long Version: === Key fact - thumbnails is connected to the Large Image (bin) via the column bin_id The code in Exhibit 1 doesn't work because I get the 'error ImageThumb must have a complete key before it can be used as a parent'. So I tried to: 1. .put() ImageThumb 2. assign it as a parent 3. .put() Bin (the large image) 4. get the ID from step 3 5. insert the id in the ImageThumb and .put() it again. I got the error: you can't put an entity more than once in appengine! So my last resort was to just get rid of binID and do steps 1-3. This works! But now i'm stuck as to getting the Large Image (child) for a specific thumbnail(parent). Code Exhibit 1 == def uploadImages(self): thumb_db = ImageThumb() thumb = images.resize(image_data, 150,150,images.JPEG) thumb_db.thumb = db.Blob(thumb) bin_db = ImageBin(parent=thumb_db) bin_db.image = image_data bin_put=bin_db.put() bin_id = bin_put.id() thumb_db.binId = bin_id === need binId so that thumbnail is linked to actual image (so I can use get by id class) thumb_db.type= Picture thumb_put = thumb_db.put() thumb_id = thumb_put.id() --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: Redirect loop when accessing my site
I figured it out. There was some bad data which cause the issue. Thank you, Marzia. Min On Mar 16, 2:07 pm, Min Li lim...@gmail.com wrote: It seems not related to codes. Please have a visit to the website:http://www.childcenter.ca. Sometimes it works, sometimes the error happens. I checked this morning, it worked. But it's not working now. It sounds like the very unstable domain name service. Thanks for your time. Min On Mar 16, 1:48 pm, Marzia Niccolai ma...@google.com wrote: Hi, Could you post any code that might help diagnose the error, as well as the URL where it is occurring? -Marzia On Sun, Mar 15, 2009 at 10:57 PM, Min Li lim...@gmail.com wrote: Hi, My web site experience the 'redirect loop ' error. It worked well before. Any idea? Thanks, --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: GAE Access In China
Having a relationship with the Chinese govt does not imply that one can always get what one wants from the Chinese govt. Absolutely true. But what I'm suggesting is that they leverage their relationships on behalf of the GAE developer community in China to try and help us out. A lot of times in China its the only and best way to grease the wheels. I've looked through the threads and this isn't the first time this issue has come up. Again, my real question for Google is: Is GAE ready to support mission critical applications in China? Or for that matter anywhere? I need an uptime gaurantee. As much as I love Google, if Baidu offered a comparable cloud computing service, I'd probably use it instead, simply because I've never once had an issue accessing Baidu.com. Why does Google have blocking issues and Baidu doesn't? I know a lot of the blocking issues for Google are related to objectionable content that appears on Blogspot. It seems there are a few possible solutions: 1) Make sure that dynamic DNS never mixes IPs between Blogspot and GAE. 2) Be more self policing and make sure objectionable content is never allowed to appear to Chinese users. There's no bigger advocate for free speech than me, but here you play by the rules or don't play at all, and its pretty much that simple. So the solution might be techincal, and it might be political, but whatever it is there needs to be one. I'm sure Google has experts on all of these issues and I'd love to hear their opinions! --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] gae and google apps
anybody can easily add our application to their google apps services. and may eat all our resources. How do we prevent that ? --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---
[google-appengine] Re: GAE Access In China
But what I'm suggesting is that they leverage their relationships on behalf of the GAE developer community in China to try and help us out. How do you know that they're not? Again, my real question for Google is: Is GAE ready to support mission critical applications in China? Or for that matter anywhere? I need an uptime gaurantee. And I need a pony. Why does Google have blocking issues and Baidu doesn't? I note that Google has interests other than China while Baidu doesn't. Why aren't you dealing with the blockers? I know a lot of the blocking issues for Google are related to objectionable content that appears on Blogspot. It seems there are a few possible solutions: 1) Make sure that dynamic DNS never mixes IPs between Blogspot and GAE. 2) Be more self policing and make sure objectionable content is never allowed to appear to Chinese users. The blockers know that blogspot is owned by Google. They can easily decide to block other google services as punishment for Google not shutting down blogspot. They can easily decide that google should be punished for allowing objectionable content to be shown to anyone. I'm sure Google has experts on all of these issues and I'd love to hear their opinions! Let me suggest that this is a Chinese problem that Chinese will have to solve. On Mar 18, 8:55 pm, John C johnmcourt...@gmail.com wrote: Having a relationship with the Chinese govt does not imply that one can always get what one wants from the Chinese govt. Absolutely true. But what I'm suggesting is that they leverage their relationships on behalf of the GAE developer community in China to try and help us out. A lot of times in China its the only and best way to grease the wheels. I've looked through the threads and this isn't the first time this issue has come up. Again, my real question for Google is: Is GAE ready to support mission critical applications in China? Or for that matter anywhere? I need an uptime gaurantee. As much as I love Google, if Baidu offered a comparable cloud computing service, I'd probably use it instead, simply because I've never once had an issue accessing Baidu.com. Why does Google have blocking issues and Baidu doesn't? I know a lot of the blocking issues for Google are related to objectionable content that appears on Blogspot. It seems there are a few possible solutions: 1) Make sure that dynamic DNS never mixes IPs between Blogspot and GAE. 2) Be more self policing and make sure objectionable content is never allowed to appear to Chinese users. There's no bigger advocate for free speech than me, but here you play by the rules or don't play at all, and its pretty much that simple. So the solution might be techincal, and it might be political, but whatever it is there needs to be one. I'm sure Google has experts on all of these issues and I'd love to hear their opinions! --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---