[google-appengine] Mail to one admin

2010-04-15 Thread prgmratlarge
I want to use the send_mail_to_admins function -- but don't want all
my admins receiving the message. Just the one(s) I want.

Right now, even if I specify a "to" address, it still goes to all of
them.

Any help?

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Hanging AJAX connections, and the 30 second deadline

2010-04-15 Thread Nickolas Daskalou
If you're keeping your AJAX connections open for 25 seconds, once you get a
bit of traffic you will probably hit the max concurrent request limit of 30,
and any extra AJAX connections will either timeout or wait for other AJAX
connections to close first before connecting to your App Engine app.

Since you're sleeping for 5 seconds on the server side anyway, it'd be
better to close the AJAX connection and move the 5 seconds sleep to the
client/browser instead, then reestablish an AJAX connection after you wake
(polling with client-side sleep instead of long-polling with server side
sleep).

According to the roadmap (http://code.google.com/appengine/docs/roadmap.html),
there are plans to release "support for Browser Push (Comet) communication",
which will hopefully remove the need for such workarounds and make the world
a better place for our children, and our children's children.


On 16 April 2010 03:22, eric maxey  wrote:

> I have a site that uses hanging AJAX connections that notify the
> client when certain database changes happen.
>
> The server checks the database every 5 seconds, and if the change has
> taken place, returns the data to the client. Otherwise, it keeps
> looping.
>
> As it is, I need to re-establish this connection every 25 seconds,
> because of the 30 second deadline imposed on google app engine.
>
> Is there any better way to do this?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Upgraded Dashboard Log Viewer is a pain

2010-04-15 Thread rgyani
I am developing gadgets and robots for wave, so the only way to debug
my code is thru appengine logs.

But u seem to have changed the format of the log, in such a way that
for viewing my debugging messages( Warning messages) i have to click
on LOGS, and then select WARNING from the dropdown!

Why oh why!

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Hanging AJAX connections, and the 30 second deadline

2010-04-15 Thread eric maxey
I have a site that uses hanging AJAX connections that notify the
client when certain database changes happen.

The server checks the database every 5 seconds, and if the change has
taken place, returns the data to the client. Otherwise, it keeps
looping.

As it is, I need to re-establish this connection every 25 seconds,
because of the 30 second deadline imposed on google app engine.

Is there any better way to do this?

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Youtube API

2010-04-15 Thread Wesley C (Google)
YouTube API discussion group here:
http://groups.google.com/group/youtube-api-gdata/

Home page for YouTube Direct here:
http://www.youtube.com/direct

Project page for YouTube Direct API here:
http://code.google.com/apis/youtube/ytdirect.html

Architecture diagram here:
http://code.google.com/p/youtube-direct/wiki/ArchitectureOverview

YouTube Direct FAQ here:
http://www.google.com/youtube/youtube-direct-faq.html

How to get started page here:
http://code.google.com/p/youtube-direct/wiki/GettingStarted

hope this helps!
-- wesley
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"Core Python Programming", Prentice Hall, (c)2007,2001
"Python Fundamentals", Prentice Hall, (c)2009
   http://corepython.com

wesley.j.chun :: wesc+api-at-google-dot-com
developer relations :: google app engine
@app_engine :: googleappengine.blogspot.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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: 400 bad request on production server, nothing in logs

2010-04-15 Thread kevin
anybody help? I have checked the issues about 400 bad request, but it
looks like they are different cases.

On 4月13日, 上午11时50分, kevin  wrote:
> Hi all,
>
> I setup a requirements-rlt.appspot.com app  which providing web service
> interface.
> When I deployed it on production server, I got a error:
> Error: 400 Bad Request: Your client has issued a malformed or illegal
> request.
>
> the requirements-rlt is an app which providing web service. The
> application(client)'s web address is:http://sdm.raylightech.com/usecase/,
> when loading this URL, js code will initialize a /usecase/getlist/ request
> to the application(client), then the client will send a GET request with
> oauth signature in header to requirements-rlt app.
>
> The client will get a response with 400 Bad Request: Your client has issued
> a malformed or illegal request. The client sent out a 500 error wrapped the
> 400 error inside it:
>
> MissingSignature at /usecase/getlist/
>
> 400 Bad Request
>
> Google Error
> Bad Request
> Your client has issued a malformed or illegal request.
>
> Request Method: GET
> Request URL:http://localhost:8000/usecase/getlist/
> Exception Type: MissingSignature
> Exception Value:
>
> (MissSignature is the wrong translate by client(app) for 400 bad request
> error from requirements-rlt app)
>
> This process works well on development server. And the strange thing is no
> log
> for the GET request on appengine control panel. I have changed the client
> to my pc, the same error generated.
>
> But for PUT request, it works well and logged correctly.
>
> For both client app and requirements-rlt app, oauth2 python library
> used(which used httplib2) for signing oauth request and authentication.
>
> somebody give 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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] urlfetch.Fetch() was explicitly cancelled

2010-04-15 Thread Jairo Vasquez
I got this error:

The API call urlfetch.Fetch() was explicitly cancelled

Thanks

-- 
Jairo Vasquez Moreno
Mentez Developer
www.mentez.com
Medellin - Colombia

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Date time property in G Data Store error

2010-04-15 Thread Delzad
Hi there!

Mate I have tried every thing!

1. I even removed the header line of the csv file, kept just the
values.
  when I did that...the error now is that the tuple object is not
callable

2. Secondly, i even used google docs, same error.

here is the one liner.

**loaders.py**
('author_birthdate', lambda x: datetime.datetime.strptime(x, '%d/%m/
%Y').date())

**models.py**
1. )  author_birthdate = db.StringProperty()
or
2. )  author_birthdate = db.DateProperty()

i even tried
 author_birthdate = db.DateTimeProperty()


**command used to upload data**
appcfg.py upload_data --config_file=loaders.py --filename=del1.csv --
kind=new_delzad ray-tech

I'm going exactly as per the tutorial, but the problem lies in the
date format...which is where i am confused.

Note: this same command worked brilliant when I passed the date as a
string.

look forward to your views on this one!

regards

Del








On Apr 15, 4:52 pm, "Nick Johnson (Google)" 
wrote:
> Hi Delzad,
>
> Can you provide a oneliner (datetime.datetime.striptime(...)) that
> reproduces this behaviour? The problem is with date formatting, so it will
> be useful to remove the extraneous issues of the bulkloader from the
> equation.
>
> -Nick Johnson
>
>
>
> On Thu, Apr 15, 2010 at 1:46 AM, Delzad  wrote:
> > Hi Nick!
>
> > thanks for the post dear,
>
> > yes I did try to send in an example date..and it gave back that same
> > string and said that the format did not match, and it inserted an
> > extra set of Inverted quotes..
>
> > I have a feeling it's something to do with my CSV file...
>
> > here is the code..
>
> > ***loaders.py**
>
> > import datetime
> > from google.appengine.ext import db
> > from google.appengine.tools import bulkloader
> > import models
>
> > class BookLoader(bulkloader.Loader):
> >   def __init__(self):
> >       bulkloader.Loader.__init__(self, 'Book',
> >           [('title', str),
> >            ('author', str),
> >            ('copyright_year', str),
> >            ('author_birthdate', lambda x:
> > datetime.datetime.strptime(x, '%m/%d/%Y').date()),
> >           ])
>
> > loaders = [BookLoader]
>
> > *models.py***
> > from google.appengine.ext import db
>
> > class Book(db.Model):
> >  title = db.StringProperty()
> >  author = db.StringProperty()
> >  copyright_year = db.StringProperty()
> >  author_birthdate = db.DateProperty()
>
> > **new_delzad.csv ***
>
> > title         author          copyright_year    author_birthdate
> > app_en  Delzad  2010                      12/25/2012
>
> > ** ERROR MESSAGE**
> > File "/usr/lib/python2.6/_strptime.py", line 325, in _strptime
> >    (data_string, format))
> > ValueError: time data "'author_birthdate'" does not match format '%m/
> > %d/%Y'
> > [INFO    ] Backing off due to errors: 1.0 seconds
> > [INFO    ] An error occurred. Shutting down...
> > [ERROR   ] Error in WorkerThread-0: time data "'author_birthdate'"
> > does not match format '%m/%d/%Y'
>
> > these inverted commas, which i have entered in the loaders.py is the
> > format which I am specifying right?
>
> > the csv file in Excel spreadsheet does not contain any inverted
> > commas...
>
> > so this kind of leaves me a bit baffled..where could I be going wrong?
>
> > can i just remove the strptime thing and add just a simple date
> > format?
>
> > thanks dear
>
> > regards
>
> > Delzad
>
> > On Apr 14, 3:09 pm, "Nick Johnson (Google)" 
> > wrote:
> > > Hi Delzad,
>
> > > Can you provide sample data? Have you tried passing an example date
> > directly
> > > to datetime.datetime.strptime with that format string, to see if it
> > works?
>
> > > -Nick Johnson
>
> > > On Wed, Apr 14, 2010 at 1:00 AM, Delzad  wrote:
> > > > Hi there!
>
> > > > Bit confused about the data stores ability to take in data.
>
> > > > i'm trying to upload a data value in the format, %m/%d/%Y, but i keep
> > > > getting the error message: ValueError: time data 'Date' does not match
> > > > format '%m/%d/%Y'.
>
> > > > My CSV file contains data in this exact same format.
>
> > > > here is the main bit of my loader file.
>
> > > > class loaders(bulkloader.Loader):
> > > >  def __init__(self):
> > > >    bulkloader.Loader.__init__(self, 'New_aviva',
> > > >                               [('Date',lambda x:
> > > > datetime.datetime.strptime(x, '%m/%d/%Y').date()),
> > > >                                ('Open', int),
> > > >                                ('high', int),
> > > >                                ('low', int),
> > > >                                ('close', int),
> > > >                                ('volume', int),
> > > >                                ('adjclose', int)
> > > >                               ])
>
> > > > Although I have managed to fix this error...if I take in the date
> > > > property as a STRING, it works just fine, but then I have issues with
> > > > the GQL in the data store, as I would not be able to access them in
> > > > any order.
>
> > > > So i need to take in date as a DATE value.
>
> 

[google-appengine] Re: Request per Second limitation (PLEASE)

2010-04-15 Thread Jairo Vasquez
Nick,

I'm getting "Limited" in Requests and Secure Requests Quotas. Also
pages are showing "Quota error" (not all times).

I've tried to reduce requests. I just though you told me everything
would scale :S

Please what can I do.

On Apr 14, 12:21 pm, "Nick Johnson (Google)" 
wrote:
> Hi Jairo,
>
> If your average latency is low (below 1 second), you should be able to scale
> up to any request load, as long as you provide the budget to support it.
>
> -Nick Johnson
>
> On Wed, Apr 14, 2010 at 5:37 PM, Jairo Vasquez wrote:
>
>
>
>
>
> > Hi,
>
> > I am managing 650 request per second. Can I start to manage 1200
> > request per second?
>
> > I need to know what my limits are, what can I do.
>
> > Should I use another solution or can GAE support this load?
>
> > Thanks
>
> > --
> > Jairo Vasquez Moreno
> > Mentez Developer
> >www.mentez.com
> > Medellin - Colombia
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com > e...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. ::
> Registered in Dublin, Ireland, Registration Number: 368047
> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
> 368047

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Outbound email failure today

2010-04-15 Thread Greg Tracy

Curious to know if there was a problem with the GAE email server this
afternoon. 88 (of roughly 675) emails sent out by my app today bounced
back. The bounced emails all had messages with text similar to the
following...

The error that the other server returned was: 501 501
<3t0fhswohbkkpanp.cajlhjcc.wncujaburwdbrc@1rf-
H_fBpZ96xCRX.apphosting.bounces.google.com>: malformed address:
_fBpZ96xCRX.apphosting.bounces.g may not follow
<3t0fhswohbkkpanp.cajlhjcc.wncujaburwdbrc@1rf-h (state 13).


Thoughts?

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: task queue timeouts

2010-04-15 Thread bFlood
thx james, I saw that issue# and had starred already

1) this was just working yesterday
2) has the Task Queue been depreciated in favor of some (future)
background worker scenario? (see last comment on that issue link). I'm
in favor of this but it would be nice if that were available before
they started throttling the TQ
3) I wonder if this is related to the removal of the Simultaneous
Requests limit (http://code.google.com/appengine/kb/
general.html#activerequests) which seems to favor low latency request
and penalizes long running ones (although if this is the case, I'm not
how anyone can do anything meaningful with  the Task Queue)


cheers
brian

On Apr 15, 3:00 pm, James  wrote:
> Star this puppy 
> -http://code.google.com/p/googleappengine/issues/detail?id=2396
>
> On Apr 15, 11:39 am, bFlood  wrote:
>
>
>
> > is anyone else seeing a lot more Task Queue 10 seconds timeouts today?
> > These tasks usually take about 10-15secs to complete and were running
> > really fast yesterday. Billing enabled.
>
> > "Request was aborted after waiting too long to attempt to service your
> > request. "
> > /tasks/indexing 500 10026ms 0cpu_ms 0kb AppEngine-Google; (+http://
> > code.google.com/appengine)
> > 0.1.0.2

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: task queue timeouts

2010-04-15 Thread James
Star this puppy - http://code.google.com/p/googleappengine/issues/detail?id=2396

On Apr 15, 11:39 am, bFlood  wrote:
> is anyone else seeing a lot more Task Queue 10 seconds timeouts today?
> These tasks usually take about 10-15secs to complete and were running
> really fast yesterday. Billing enabled.
>
> "Request was aborted after waiting too long to attempt to service your
> request. "
> /tasks/indexing 500 10026ms 0cpu_ms 0kb AppEngine-Google; (+http://
> code.google.com/appengine)
> 0.1.0.2

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Questions about request logs (their circular buffer, its size etc.)

2010-04-15 Thread peterk
Hey Ikai, thanks for the reply.

Are you sure about the 90 day thing? I was reading a thread here where
Nick Johnson suggested it was a fixed buffer size:

http://groups.google.com/group/google-appengine/browse_thread/thread/faa52812efdbeaaa/a22d1a02a97e95df?lnk=gst&q=appengine+logs+circular+buffer#a22d1a02a97e95df

In that case, the person asking seemed to be only able to keep 20
minutes of log data before old logs started to be overwritten (a busy
site I guess!).

Has something changed? Could you check out what the case actually is?

If I might, I'd like to request if log related 'quotas' could be
exposed and published, and expandable with money if possible! :)
They're quite critical to an app I'm trying to plan, and while the
current setup seems to be OK for my  needs, the blindness to what's
happening under the covers and what might happen going forward is a
wee bit disconcerting.

Cheers,

On Apr 15, 6:48 pm, "Ikai L (Google)"  wrote:
> The last time I checked, we guaranteed 90 days of logs regardless of size.
> This is subject to change, however. I don't know what size we will set, but
> like many of our other products, it'll likely start at a number we think is
> reasonable based on overall usage and trend upward.
>
> Anything is possible with regards to billed features - we just can't give an
> ETA unless it's explicitly stated on the roadmap.
>
>
>
>
>
> On Wed, Apr 14, 2010 at 12:27 PM, peterk  wrote:
> > Reading some previous discussions and things alluded to therein, some
> > questions cropped up.
>
> > I'm considering an application that quite fundamentally requires
> > access to all its request logs.
>
> > So I guess I'd be recommended to use appcfg.py to periodically pull
> > down the logs and append them to a txt file, or do whatever else I
> > need to do to persist them.
>
> > In previous discussion I saw Google folks say that logs are stored in
> > a circular buffer. Meaning if you had enough requests, they'd
> > overwrite older requests. Meaning that if you had enough requests or
> > were downloading the logs sufficiently infrequently, you might lose
> > logs.
>
> > So question number 1: how big is the circular buffer for each
> > application?
>
> > 2: Changes to that buffer size could detrimentally impact on my
> > application if revised downward (silently in particular), so are there
> > any guarantees that this buffer size won't be reduced in the future?
>
> > 3: Is there any possibility that this buffer could be exposed via the
> > quota system so that an app could purchase a larger buffer size if it
> > were helpful?
>
> > I'm flashing forward to a busy site and somewhat worrying about how
> > frequently I'll have to download the logs, and whether it would be
> > feasible to download them with a certain frequency anyway (e.g. if the
> > log download time is quite long - as I've found it can be). Any
> > answers or advice would be very welcome. 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-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com > e...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> Ikai Lan
> Developer Programs Engineer, Google App 
> Enginehttp://googleappengine.blogspot.com|http://twitter.com/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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Help! About to hit the limit on appengine taskqueue 1M tasks limit

2010-04-15 Thread peterk
>> If you  can tolerate additional latency, why not store data into the 
>> datastore?

Because it's expensive? :) There's a big difference between making a
100ms put to datastore every request and making one every n requests.
Requests with that higher latency may be tolerable from a end-user's
POV but may not be tolerable from my wallet's perspective... :)


>> We exposed a "grabTail" method for Memcache but removed it due to namespace 
>> bugs. If we release this in the future, grabTail will return the next item  
>> to be evicted by LRU, so you can write an asynchronous task to flush this to 
>> the datastore.

This would be good :) I'd no idea the grabTail method did that. The
next question then would be what proportion of evictions are cause by
LRU over-writes...I'm sure evictions sometimes happen for other
reasons (like hardware failure), but if those other reasons cause only
a tiny proportion of evictions, then this regime might make memcache
reliable 'enough'.

If grabtail allows this, please bring it back soon! :D


On Apr 15, 6:29 pm, "Ikai L (Google)"  wrote:
> We're moving into a middle ground between Memcache and the datastore. If you
> can tolerate additional latency, why not store data into the datastore? You
> should not design assuming memcache will preserve critical data. Don't store
> anything in memcache that you cannot recover if evicted, even if your
> application runs in a degraded mode.
>
> We exposed a "grabTail" method for Memcache but removed it due to namespace
> bugs. If we release this in the future, grabTail will return the next item
> to be evicted by LRU, so you can write an asynchronous task to flush this to
> the datastore. There are no plans to create triggers for eviction.
>
>
>
>
>
> On Thu, Apr 15, 2010 at 8:15 AM, peterk  wrote:
> > It would, but depending on the extent of that latency it might be a
> > reasonable trade off for reliability. I've an app that could
> > definitely tolerate some % of memcache saves being higher latency if
> > it guaranteed I didn't lose data.
>
> > The option of a silent background put() to the datastore upon eviction
> > also wouldn't necessarily incur extra latency for your memcache save,
> > but would instead 'just' cost you cpu_ms for those ds puts (i'm sure
> > those DS puts could be asynchronous and your memcache operation could
> > return without waiting for them to finish).
>
> > Again, I don't know if it's practical on the backend, feasible to
> > implement. But I believe other database systems offer that kind of
> > write-behind cache.
>
> > On Apr 15, 3:45 pm, Wooble  wrote:
> > > On Apr 15, 9:48 am, peterk  wrote:
>
> > > > It'd be great if memcache could throw a warning or error upon a put to
> > > > memcache, if that put will cause an eviction of another value, and ask
> > > > you to retry your put with a token to confirm you're OK with the
> > > > eviction.
>
> > > It's a cache.  That would add annoying latency.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com > e...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> Ikai Lan
> Developer Programs Engineer, Google App 
> Enginehttp://googleappengine.blogspot.com|http://twitter.com/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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Questions about request logs (their circular buffer, its size etc.)

2010-04-15 Thread Ikai L (Google)
The last time I checked, we guaranteed 90 days of logs regardless of size.
This is subject to change, however. I don't know what size we will set, but
like many of our other products, it'll likely start at a number we think is
reasonable based on overall usage and trend upward.

Anything is possible with regards to billed features - we just can't give an
ETA unless it's explicitly stated on the roadmap.

On Wed, Apr 14, 2010 at 12:27 PM, peterk  wrote:

> Reading some previous discussions and things alluded to therein, some
> questions cropped up.
>
> I'm considering an application that quite fundamentally requires
> access to all its request logs.
>
> So I guess I'd be recommended to use appcfg.py to periodically pull
> down the logs and append them to a txt file, or do whatever else I
> need to do to persist them.
>
> In previous discussion I saw Google folks say that logs are stored in
> a circular buffer. Meaning if you had enough requests, they'd
> overwrite older requests. Meaning that if you had enough requests or
> were downloading the logs sufficiently infrequently, you might lose
> logs.
>
> So question number 1: how big is the circular buffer for each
> application?
>
> 2: Changes to that buffer size could detrimentally impact on my
> application if revised downward (silently in particular), so are there
> any guarantees that this buffer size won't be reduced in the future?
>
> 3: Is there any possibility that this buffer could be exposed via the
> quota system so that an app could purchase a larger buffer size if it
> were helpful?
>
> I'm flashing forward to a busy site and somewhat worrying about how
> frequently I'll have to download the logs, and whether it would be
> feasible to download them with a certain frequency anyway (e.g. if the
> log download time is quite long - as I've found it can be). Any
> answers or advice would be very welcome. 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-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>


-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://googleappengine.blogspot.com | http://twitter.com/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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Re: Help! About to hit the limit on appengine taskqueue 1M tasks limit

2010-04-15 Thread Ikai L (Google)
We're moving into a middle ground between Memcache and the datastore. If you
can tolerate additional latency, why not store data into the datastore? You
should not design assuming memcache will preserve critical data. Don't store
anything in memcache that you cannot recover if evicted, even if your
application runs in a degraded mode.

We exposed a "grabTail" method for Memcache but removed it due to namespace
bugs. If we release this in the future, grabTail will return the next item
to be evicted by LRU, so you can write an asynchronous task to flush this to
the datastore. There are no plans to create triggers for eviction.

On Thu, Apr 15, 2010 at 8:15 AM, peterk  wrote:

> It would, but depending on the extent of that latency it might be a
> reasonable trade off for reliability. I've an app that could
> definitely tolerate some % of memcache saves being higher latency if
> it guaranteed I didn't lose data.
>
> The option of a silent background put() to the datastore upon eviction
> also wouldn't necessarily incur extra latency for your memcache save,
> but would instead 'just' cost you cpu_ms for those ds puts (i'm sure
> those DS puts could be asynchronous and your memcache operation could
> return without waiting for them to finish).
>
> Again, I don't know if it's practical on the backend, feasible to
> implement. But I believe other database systems offer that kind of
> write-behind cache.
>
> On Apr 15, 3:45 pm, Wooble  wrote:
> > On Apr 15, 9:48 am, peterk  wrote:
> >
> > > It'd be great if memcache could throw a warning or error upon a put to
> > > memcache, if that put will cause an eviction of another value, and ask
> > > you to retry your put with a token to confirm you're OK with the
> > > eviction.
> >
> > It's a cache.  That would add annoying latency.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>


-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://googleappengine.blogspot.com | http://twitter.com/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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Reset my google app engine application

2010-04-15 Thread Wooble


On Apr 15, 5:34 am, HM2K  wrote:
> How do I reset it?
>
> Cheers.

What do you mean by "reset"?

To delete all of your data, you need to fetch all of your entities'
keys and use them to delete the entities.  If you just want to get rid
of the deployed code, deploy an empty version and delete any other
versions.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] Re: Date time property in G Data Store error

2010-04-15 Thread Nick Johnson (Google)
Hi Delzad,

Can you provide a oneliner (datetime.datetime.striptime(...)) that
reproduces this behaviour? The problem is with date formatting, so it will
be useful to remove the extraneous issues of the bulkloader from the
equation.

-Nick Johnson

On Thu, Apr 15, 2010 at 1:46 AM, Delzad  wrote:

> Hi Nick!
>
> thanks for the post dear,
>
> yes I did try to send in an example date..and it gave back that same
> string and said that the format did not match, and it inserted an
> extra set of Inverted quotes..
>
> I have a feeling it's something to do with my CSV file...
>
> here is the code..
>
> ***loaders.py**
>
> import datetime
> from google.appengine.ext import db
> from google.appengine.tools import bulkloader
> import models
>
> class BookLoader(bulkloader.Loader):
>   def __init__(self):
>   bulkloader.Loader.__init__(self, 'Book',
>   [('title', str),
>('author', str),
>('copyright_year', str),
>('author_birthdate', lambda x:
> datetime.datetime.strptime(x, '%m/%d/%Y').date()),
>   ])
>
> loaders = [BookLoader]
>
>
> *models.py***
> from google.appengine.ext import db
>
> class Book(db.Model):
>  title = db.StringProperty()
>  author = db.StringProperty()
>  copyright_year = db.StringProperty()
>  author_birthdate = db.DateProperty()
>
> **new_delzad.csv ***
>
> title author  copyright_yearauthor_birthdate
> app_en  Delzad  2010  12/25/2012
>
>
> ** ERROR MESSAGE**
> File "/usr/lib/python2.6/_strptime.py", line 325, in _strptime
>(data_string, format))
> ValueError: time data "'author_birthdate'" does not match format '%m/
> %d/%Y'
> [INFO] Backing off due to errors: 1.0 seconds
> [INFO] An error occurred. Shutting down...
> [ERROR   ] Error in WorkerThread-0: time data "'author_birthdate'"
> does not match format '%m/%d/%Y'
>
>
>
>
>
> these inverted commas, which i have entered in the loaders.py is the
> format which I am specifying right?
>
> the csv file in Excel spreadsheet does not contain any inverted
> commas...
>
> so this kind of leaves me a bit baffled..where could I be going wrong?
>
> can i just remove the strptime thing and add just a simple date
> format?
>
> thanks dear
>
> regards
>
> Delzad
>
>
> On Apr 14, 3:09 pm, "Nick Johnson (Google)" 
> wrote:
> > Hi Delzad,
> >
> > Can you provide sample data? Have you tried passing an example date
> directly
> > to datetime.datetime.strptime with that format string, to see if it
> works?
> >
> > -Nick Johnson
> >
> >
> >
> > On Wed, Apr 14, 2010 at 1:00 AM, Delzad  wrote:
> > > Hi there!
> >
> > > Bit confused about the data stores ability to take in data.
> >
> > > i'm trying to upload a data value in the format, %m/%d/%Y, but i keep
> > > getting the error message: ValueError: time data 'Date' does not match
> > > format '%m/%d/%Y'.
> >
> > > My CSV file contains data in this exact same format.
> >
> > > here is the main bit of my loader file.
> >
> > > class loaders(bulkloader.Loader):
> > >  def __init__(self):
> > >bulkloader.Loader.__init__(self, 'New_aviva',
> > >   [('Date',lambda x:
> > > datetime.datetime.strptime(x, '%m/%d/%Y').date()),
> > >('Open', int),
> > >('high', int),
> > >('low', int),
> > >('close', int),
> > >('volume', int),
> > >('adjclose', int)
> > >   ])
> >
> > > Although I have managed to fix this error...if I take in the date
> > > property as a STRING, it works just fine, but then I have issues with
> > > the GQL in the data store, as I would not be able to access them in
> > > any order.
> >
> > > So i need to take in date as a DATE value.
> >
> > > Guidance appriciated.
> >
> > > --
> > > 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.
> >
> > --
> > Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd.
> ::
> > Registered in Dublin, Ireland, Registration Number: 368047
> > Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
> Number:
> > 368047
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>


-- 
Nick

[google-appengine] task queue timeouts

2010-04-15 Thread bFlood
is anyone else seeing a lot more Task Queue 10 seconds timeouts today?
These tasks usually take about 10-15secs to complete and were running
really fast yesterday. Billing enabled.

"Request was aborted after waiting too long to attempt to service your
request. "
/tasks/indexing 500 10026ms 0cpu_ms 0kb AppEngine-Google; (+http://
code.google.com/appengine)
0.1.0.2

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Request per Second limitation (PLEASE)

2010-04-15 Thread Jairo Vasquez
Thanks Nick,

We are now in 1250 Req/sec and everything is fine :)

On Apr 14, 12:21 pm, "Nick Johnson (Google)" 
wrote:
> Hi Jairo,
>
> If your average latency is low (below 1 second), you should be able to scale
> up to any request load, as long as you provide the budget to support it.
>
> -Nick Johnson
>
> On Wed, Apr 14, 2010 at 5:37 PM, Jairo Vasquez wrote:
>
>
>
>
>
> > Hi,
>
> > I am managing 650 request per second. Can I start to manage 1200
> > request per second?
>
> > I need to know what my limits are, what can I do.
>
> > Should I use another solution or can GAE support this load?
>
> > Thanks
>
> > --
> > Jairo Vasquez Moreno
> > Mentez Developer
> >www.mentez.com
> > Medellin - Colombia
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com > e...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd. ::
> Registered in Dublin, Ireland, Registration Number: 368047
> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
> 368047

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Help! About to hit the limit on appengine taskqueue 1M tasks limit

2010-04-15 Thread peterk
It would, but depending on the extent of that latency it might be a
reasonable trade off for reliability. I've an app that could
definitely tolerate some % of memcache saves being higher latency if
it guaranteed I didn't lose data.

The option of a silent background put() to the datastore upon eviction
also wouldn't necessarily incur extra latency for your memcache save,
but would instead 'just' cost you cpu_ms for those ds puts (i'm sure
those DS puts could be asynchronous and your memcache operation could
return without waiting for them to finish).

Again, I don't know if it's practical on the backend, feasible to
implement. But I believe other database systems offer that kind of
write-behind cache.

On Apr 15, 3:45 pm, Wooble  wrote:
> On Apr 15, 9:48 am, peterk  wrote:
>
> > It'd be great if memcache could throw a warning or error upon a put to
> > memcache, if that put will cause an eviction of another value, and ask
> > you to retry your put with a token to confirm you're OK with the
> > eviction.
>
> It's a cache.  That would add annoying latency.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] convert to java code

2010-04-15 Thread hetal brahmbhatt
I find the code which is written in python..
but i don't know python language and want to understand the code...
so if it is possible to convert it into java...
i understand it properly..
please help me with that
and convert it into similar java code...


Here is my code:

import logging
import urllib
import re

from waveapi import events
from waveapi import model
from waveapi import robot
from waveapi import document


from django.utils import simplejson
from google.appengine.api import urlfetch


def OnDocChanged(properties, context):
#Get Contents of current blip
blip = context.GetBlipById(properties['blipId'])
contents = blip.GetDocument().GetText()
#Clean Up Text Remove  
p = re.compile('(<( )*br( )*[/]>)')
contents = p.sub('\n',contents)
#Run Search
sRes += "["
sRes += processBlip(contents)

if(sRes != contents):
sRes += "]"
root_wavelet = context.GetRootWavelet()
root_wavelet.CreateBlip().GetDocument().SetText(sRes)

def processBlip(blip):
text = blip.GetDocument().GetText()
returnText = ""
charsAdded = 0
#Setup Regular Expression to find search strings
p = re.compile("^(.)_ ([0-9a-zA-Z ]+)",re.MULTILINE)
searchStrings = p.finditer(text)
flickrImages = []
#Iterate through search strings
for c in searchStrings:
s = c.groups()
if(s[0] == 'G'):
sRet = '\nGoogle Search for "' + s[1] + '"\n\n'
sRet += searchGoogle(s[1])
#returnText = returnText[0:c.end()+charsAdded] + sRet +
'\n'+ returnText[c.end()+charsAdded+1:len(returnText)]
#charsAdded += len(sRet)
stringToBlip(blip,sRet)
elif(s[0] == 'F'):
sRet = searchFlickr(s[1])
for imageURL in sRet:
cImg = document.Image(imageURL)
flickrImages.append(cImg)
title = '\nFlickr Search for "' + s[1] + '"\n\n'
imageListToBlip(blip,flickrImages,title)

#blip.GetDocument().SetText(contents)
def stringToBlip(blip,contents):
#newBlip = blip
newBlip = blip.GetDocument().AppendInlineBlip()
if(contents):
newBlip.GetDocument().SetText(contents)

def imageListToBlip(blip,imgList,text):
#newBlip = blip
newBlip = blip.GetDocument().AppendInlineBlip()
newBlip.GetDocument().SetText(text)
for i in imgList:
newBlip.GetDocument().AppendElement(i)

def searchFlickr(query):
results = []
url = 'http://api.flickr.com/services/rest/?
method=flickr.photos.search&api_key=13b98c74bedac9150a428e87bc782e81&format=json&per_page=5&text=
%s' % (urllib.quote(query))
content = urlfetch.fetch(url=url).content
content =content[:-1].replace("jsonFlickrApi(","")
for item in simplejson.loads(content)['photos']['photo']:
results.append('http://farm'+str(item['farm'])
+'.static.flickr.com/'+str(item['server'])+'/'+str(item['id'])
+'_'+str(item['secret'])+'_m.jpg')

return results

def searchGoogle(query):
results = ""
#print "Searching Google with query \"" + query + "\""
url = 'http://ajax.googleapis.com/ajax/services/search/web?
v=1.0&start=0&q=%s' % (urllib.quote(query))
content = urlfetch.fetch(url=url).content
for item in simplejson.loads(content)['responseData']['results']:
p = re.compile('<[/ ]?[a-zA-Z ]>')
title = p.sub('',item['title'])
content = p.sub('',item['content'])
returnStr = title + '\n' +\
item['url'] + '\n' +\
content + '\n\n'
results += returnStr
return results


def OnRobotAdded(properties, context):
"""Invoked when the robot has been added."""
root_wavelet = context.GetRootWavelet()
root_wavelet.CreateBlip().GetDocument().SetText("Welcome to Wave
Search!")

def OnBlipSubmit(properties, context):
blip = context.GetBlipById(properties['blipId'])
processBlip(blip)

if __name__ == '__main__':
wavesearch = robot.Robot('WaveSearch',
 image_url='http://wave-search.appspot.com/
public/logo.png',
 version='1.02',
 profile_url='http://wave-search.appspot.com')
wavesearch.RegisterHandler(events.WAVELET_SELF_ADDED,
OnRobotAdded)
wavesearch.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmit)
#wavesearch.RegisterHandler(events.DOCUMENT_CHANGED, OnDocChanged)
wavesearch.Run(debug=True)

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Python App Engine developer needed

2010-04-15 Thread Martin Bysh
Title: Python App Engine developer needed


Hi,

I'm looking for an  experienced Python/app engine programmer for a job that will 
last for around a month in London.

You would have to be able to start work as soon as possible.

Please let me know if you are interested, and I will send further details.

Thanks,
Martin



Wednesday, April 14, 2010, 7:19:43 PM, you wrote:





Here's a white paper that we have about Google Apps. Many of the same principles apply. Do you have any specific questions? Your questions are a bit general.

On Wed, Apr 14, 2010 at 12:13 AM, Valentino Hankypants  wrote:
hello together,

i need some background information about security offers or some
documents which shows how security will be guaranteed in google app
engine.

- does some (special) technologies for google app engine exist to
guarantee security?
- exist some standards or guidelines to create "secure" apps with
google app engine?
- anybody knows some reliable resources for security concerns?

thx in advance

greatz
valentino

--
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.




-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://googleappengine.blogspot.com | http://twitter.com/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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.






-- 
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com.

For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.




[google-appengine] Reset my google app engine application

2010-04-15 Thread HM2K
How do I reset it?

Cheers.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Fwd: Recurring javascript errors

2010-04-15 Thread Jonathan
yea I am getting the message also but it only happens to some flash.
It just started today, yesterday was fine. My friend seems to be also
getting the same problem and it started today for him too. This is
happening in my Chrome. I don't know what to do.

Unsafe JavaScript attempt to access frame with URL
http://facebook.mafiawars.com/mwfb/remote/html_server.php?xw_controller=index&xw_action=view&xw_city=&tmp=5221c863498a152d5facdd1f7fc8591e&cb=0&skip_req_frame=1&first_load=1&sf_xw_user_id=1796169879&sf_xw_sig=2661762aa3621f8dec975a7b3450eb77
from frame with URL http://apps.facebook.com/inthemafia/?zy_link=appage.
Domains, protocols and ports must match.

-- Forwarded message --
From: pythono
Date: Mon, 29 Mar 2010 14:42:48 -0700 (PDT)
Subject: Recurring javascript errors
To: Google App Engine 

Hey there,

I keep getting the following javascript error messages (in the Chrome
javascript console).

"""
Unable to post message to http://googleads.g.doubleclick.net.
Recipient has origin http://dontjudgemejudger.appspot.com/.

Unsafe JavaScript attempt to access frame with URL 
http://dontjudgemejudger.appspot.com/
from frame with URL
http://ad.doubleclick.net/adi/N5295.134426.513244521/B4255847.11;sz=160x600;click=http://googleads.g.doubleclick.net/aclk?sa=l&ai=BEa9P6h2xS4G6J9_znAeO0rCzD4r__pMB1oCtpBDCxKLeMoDqMBABGAIg-cDpEDgAUIDH4cQEYMn2pYqkpMQRoAHOsbLyA7IBGXd3dy5kb250anVkZ2VtZWp1ZGdlci5jb226AQoxNjB4NjAwX2FzyAEJ2gEhaHR0cDovL3d3dy5kb250anVkZ2VtZWp1ZGdlci5jb20v4AECuAIYwAIG0AIBqAMB0QM3PFMkP7rgC-gD4AboA58E6ANU9QMAAADE9QMACAAAiAQAkAQBoAQE&num=2&sig=AGiWqty-r2812ptBH6NKRNaaZJKGAD5z7g&client=ca-pub-9099580055602120&adurl=;ord=1305994440?.
Domains, protocols and ports must match.
"""

It seems to be something to do with either Adsense or Analytics (i am
running both on the site).  Has anyone ever encountered these errors?
Should I be concerned (the errors don't seem to affect either google
services or my sites' native scripts)?

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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Source code for AppCfg.java

2010-04-15 Thread joetz7
Hi all,

I was wondering if the code for AppCfg.java is available anywhere.
I'm trying to modify it a bit to fit my application, however I can't
seem to find the source code for it. (Only can find the AppCfg.class
inside com.google.appengine.tools.admin)

Any help would be greatly appreciated!!
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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Google Data API to talk to App Engine Service

2010-04-15 Thread formtester
Hi,

I'm looking for a Google API that will let me talk to App Engine
Service, and get user's information regarding their App Engine
service. For example:
Given a username and password, I will then authenticate these
informations with Google service, and if authenticated, I will then
talk to App Engine service, and ask for this specific username
information (such as if this user have an application ID in Google App
Engine).

Is it possible to do so? if so, is there any example to do this?

Thanks in advance!

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Help! About to hit the limit on appengine taskqueue 1M tasks limit

2010-04-15 Thread Wooble


On Apr 15, 9:48 am, peterk  wrote:
> It'd be great if memcache could throw a warning or error upon a put to
> memcache, if that put will cause an eviction of another value, and ask
> you to retry your put with a token to confirm you're OK with the
> eviction.

It's a cache.  That would add annoying latency.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Help! About to hit the limit on appengine taskqueue 1M tasks limit

2010-04-15 Thread peterk
Are there benchmarks available for memcache reliability on GAE?

It'd be great if memcache could throw a warning or error upon a put to
memcache, if that put will cause an eviction of another value, and ask
you to retry your put with a token to confirm you're OK with the
eviction. The equivalent of a 'are you sure you want to overwrite this
value?' prompt.

On a related note, I put in a feature request for an option for a
trigger to persist memcache data to datastore upon eviction, but I
don't know if it's feasible or not :| (see:
http://code.google.com/p/googleappengine/issues/detail?id=3089&sort=-id&colspec=ID%20Type%20Status%20Priority%20Stars%20Owner%20Summary%20Log%20Component)
A warning system like the above might be more general though, but
assumes that eviction only happens because other data is pushed in
(which may not be the case - I'm guessing other scenarios cause data
eviction too).

On Apr 15, 2:14 pm, Wooble  wrote:
> On Apr 14, 10:23 pm, Timofey Koolin  wrote:
>
> > You can write your log and other tasks to memcache. In tasks or by
> > cron you can read your meny data from memcache per time and write to
> > datastore.
>
> ...if you don't mind losing your data sometimes.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Query with ancestor and JDO

2010-04-15 Thread timwhunt
I've been struggling to translate some Datastore approaches I see
documented in Python into Java.  One in particular is querying for
entities that have a given parent.  Do I have to use the low-level API
in Java for a query like that?  I can't find anything about querying
on parents in the main Java Datastore docs, which are oriented around
JDO.

I did find the com.google.appengine.api.datastore.Query.setAncestor()
method and ancestor accepting Query constructors in the low-level API
docs, and I guess that's what I'd need to use.  Is there any example
code using the low-level API?

I'd like to use JDO where I can, but I'm new to JDO, the Datastore,
and the low-level API, so I'm confused about if I should or how best
to use them together.  Again, sample code would be a big help.  Sorry
if I missed it, but all the sample apps appear to be in Python.

Thanks,
Tim

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Help! About to hit the limit on appengine taskqueue 1M tasks limit

2010-04-15 Thread Wooble


On Apr 14, 10:23 pm, Timofey Koolin  wrote:
> You can write your log and other tasks to memcache. In tasks or by
> cron you can read your meny data from memcache per time and write to
> datastore.

...if you don't mind losing your data sometimes.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Return list of dicts instead of object

2010-04-15 Thread Lynge
Hi, I am using an Expando class and I want to sort it.
It needs to be sorted according to a dynamically assigned property so
it has o be done at runtime.

I am using python and it could be done easily with something like:

dates = sorted(datelist, key=itemgetter('comp_date'))

But since the objects returned from the datastore are not iterable
this is impossible.

So I thought that I would just create my own list of dicts and then I
can iterate and sort it, but alas that is not possible either.



I can iterate over the primary just fine

for date in datesfromdb:
datelist.append(dict(date))

but no matter how I try to get the data out of the date object I have
no luck.
I dont want to name all the properties of the model since that would
make it a big pain to update anything, but how then do I do it?

Any help would be appreciated.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Random, but persistant error

2010-04-15 Thread Juan González
So nobody ever got an UnsupportedOperationException when calling
pm.getObjectById()??

El 13 de abril de 2010 22:23, Juan González  escribió:

> Hi all,
>   I have a random issue when testing my application locally. From
> time to time, when I use PersistenceManager.getObjectById() I receive
> the following exception:
>
> java.lang.UnsupportedOperationException
>at
>
> org.datanucleus.store.appengine.EntityUtils.getPropertyName(EntityUtils.java:
> 62)
>at
>
> org.datanucleus.store.appengine.DatastoreFieldManager.getPropertyName(DatastoreFieldManager.java:
> 1073)
>at
>
> org.datanucleus.store.appengine.DatastoreFieldManager.fetchObjectField(DatastoreFieldManager.java:
> 309)
>at
>
> org.datanucleus.state.AbstractStateManager.replacingObjectField(AbstractStateManager.java:
> 1197)
>at
>
> org.ugr.rtpstat.server.orm.UsuarioRegistrado.jdoReplaceField(UsuarioRegistrado.java)
>at
>
> org.ugr.rtpstat.server.orm.UsuarioRegistrado.jdoReplaceFields(UsuarioRegistrado.java)
>at
>
> org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:
> 2772)
>at
>
> org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:
> 2791)
>at
>
> org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject(DatastorePersistenceHandler.java:
> 466)
>at
>
> org.datanucleus.state.JDOStateManagerImpl.validate(JDOStateManagerImpl.java:
> 4263)
>at
> org.datanucleus.ObjectManagerImpl.findObject(ObjectManagerImpl.java:
> 2444)
>at
>
> org.datanucleus.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:
> 1671)
>at
>
> org.datanucleus.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:
> 1767)
>at
>
> org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.getObjectById(DatastoreJDOPersistenceManager.java:
> 73)
>at
>
> org.ugr.rtpstat.server.RtpstatServiceImpl.getRegisteredUser(RtpstatServiceImpl.java:
> 88)
>at
>
> org.ugr.rtpstat.server.RtpstatServiceImpl.getRegisteredUser(RtpstatServiceImpl.java:
> 79)
>at
>
> org.ugr.rtpstat.server.RtpstatServiceImpl.isRegisteredUser(RtpstatServiceImpl.java:
> 204)
>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 39)
>at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
> 25)
>at java.lang.reflect.Method.invoke(Method.java:597)
>at
>
> com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
> 100)
>at
> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
> 562)
>at
>
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
> 188)
>at
>
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
> 224)
>at
>
> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
> 62)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
>at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
>at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> 511)
>at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1166)
>at
>
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
> 51)
>at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>at
>
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
> 43)
>at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>at
>
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
> 122)
>at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> 388)
>at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> 216)
>at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> 182)
>at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> 765)
>at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> 418)
>at
>
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
> 70)
>at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>at com.google.appengine.tools.development.JettyContainerService
> $ApiProxyHandler.handle(JettyContainerService.java:349)
>at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>at org

Re: [google-appengine] Re: Mismatch between Datastore Statistics & Quota Details

2010-04-15 Thread Jaroslav Záruba
Would you mind to provide your URL of your app, so I can get some idea of
how complex an app has to be to take up that space?
Or, if it not possible due privacy reasons, could you briefly describe the
range of features and approx. number of records?

On Thu, Apr 15, 2010 at 9:27 AM, nischalshetty wrote:

> I guess that is! And that explains why I have 3.6 GB now!!
>
> -Nischal
>
> On Apr 14, 1:17 am, Jaroslav Záruba  wrote:
> > Wow. I knew indexes would be significant part of the total space taken by
> my
> > data, but 10 times the space entities take? Is it usual ratio?
> >
> > On Tue, Apr 13, 2010 at 4:27 PM, Nick Johnson (Google) <
> >
> > nick.john...@google.com> wrote:
> > > Hi Krishna,
> >
> > > The figure reported by the datastore stats represents the size of your
> > > data. The quota usage includes space taken by indexes.
> >
> > > -Nick Johnson
> >
> > > On Tue, Apr 13, 2010 at 11:19 AM, Krishna  >wrote:
> >
> > >> Hi,
> >
> > >> The datastore statistics viewer tells me that the size of all entities
> > >> stored is 3 MB. However, the quota details page tells me that I'm
> > >> using 3% of my 1 GB free limit (~30  MB). Does the 3 MB number only
> > >> represent a subset of entities or is this really a discrepancy?
> >
> > >> Thanks,
> >
> > >> Krishna
> >
> > >> --
> > >> You received this message because you are subscribed to the Google
> Groups
> > >> "Google App Engine" group.
> > >> To post to this group, send email to
> google-appeng...@googlegroups.com.
> > >> To unsubscribe from this group, send email to
> > >> google-appengine+unsubscr...@googlegroups.com
> 
> >
> > >> .
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/google-appengine?hl=en.
> >
> > > --
> > > Nick Johnson, Developer Programs Engineer, App Engine Google Ireland
> Ltd.
> > > :: Registered in Dublin, Ireland, Registration Number: 368047
> > > Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
> Number:
> > > 368047
> >
> > > --
> > > 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.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Mismatch between Datastore Statistics & Quota Details

2010-04-15 Thread nischalshetty
I guess that is! And that explains why I have 3.6 GB now!!

-Nischal

On Apr 14, 1:17 am, Jaroslav Záruba  wrote:
> Wow. I knew indexes would be significant part of the total space taken by my
> data, but 10 times the space entities take? Is it usual ratio?
>
> On Tue, Apr 13, 2010 at 4:27 PM, Nick Johnson (Google) <
>
> nick.john...@google.com> wrote:
> > Hi Krishna,
>
> > The figure reported by the datastore stats represents the size of your
> > data. The quota usage includes space taken by indexes.
>
> > -Nick Johnson
>
> > On Tue, Apr 13, 2010 at 11:19 AM, Krishna 
> > wrote:
>
> >> Hi,
>
> >> The datastore statistics viewer tells me that the size of all entities
> >> stored is 3 MB. However, the quota details page tells me that I'm
> >> using 3% of my 1 GB free limit (~30  MB). Does the 3 MB number only
> >> represent a subset of entities or is this really a discrepancy?
>
> >> Thanks,
>
> >> Krishna
>
> >> --
> >> You received this message because you are subscribed to the Google Groups
> >> "Google App Engine" group.
> >> To post to this group, send email to google-appeng...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> google-appengine+unsubscr...@googlegroups.com
> >> .
> >> For more options, visit this group at
> >>http://groups.google.com/group/google-appengine?hl=en.
>
> > --
> > Nick Johnson, Developer Programs Engineer, App Engine Google Ireland Ltd.
> > :: Registered in Dublin, Ireland, Registration Number: 368047
> > Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
> > 368047
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



Re: [google-appengine] iPhone / AppEngine / Java Servlet / Authentication

2010-04-15 Thread Patrick Twohig
I use HTTP Basic auth over SSL, works quite well for me.

On Tue, Apr 13, 2010 at 1:37 PM, hiawatha  wrote:

> Hello,
>
> I'm looking for help with, example code, or a tutorial on doing
> session management and user authentication (not Google user) from an
> iPhone App using App Engine as the back end.
>
> Any and all relevant pointers appreciated.
>
> Thanks much.
>
> - H
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>


-- 
Patrick H. Twohig.

Namazu Studios
P.O. Box 34161
San Diego, CA 92163-4161

http://www.namazustudios.com/
http://www.iduel-online.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-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: The API call mail.Send() took too long to respond and was cancelled.

2010-04-15 Thread Ubaldo Huerta
So far every time this exception is thrown the email is actually sent.
I've seen it at least 10 times so far, ironically mainly to gmail
addresses. Pretty much I take my chances and raise
deferred.PermanentTaskFailure and close my eyes on the problem. BBCing
and then processing the email back in order to actually find out if
email was sent is an option but seems like to much work.

This flakiness made me realize that I had to send one email per task.
Imagine the situation when you send 100 emails in a task and at
recipient 80th the email exception is thrown. When the task gets
retried, the first 80 recipients will get a duplicate email, well
assuming second time around the task executes without hitch.

Ideally, the bug should be fixed, mail.send should only raise
exceptions when email is not sent.


On Apr 14, 10:44 pm, hawkett  wrote:
> Sounds like it would reliably set the flag, but probably not soon
> enough (at least in some situations) to beat the task queue retry
>
> On Apr 14, 7:14 pm, "Ikai L (Google)"  wrote:
>
>
>
> > I've seen another solution where you BCC your application and use that to
> > mark the flag as successful or not.
>
> > On Wed, Apr 14, 2010 at 6:19 AM, hawkett  wrote:
> > > It seems the author is saying that he only sends one email per task,
> > > so the only 'email sent' flag to stick in memcache is the one that is
> > > occurring when the exception is raised. I'm not sure that solution
> > > will work - how can he know if an email has been sent successfully
> > > when the mail API is throwing an exception? He would need a list of
> > > the exceptions that occur *despite* the email being successfully
> > > sent.  Seems a bit shaky to me. As the author says, this seems like a
> > > GAE bug - if GAE is going to raise the DeadlineExceededError on the
> > > mail API, then the mail should not be sent - either it succeeds within
> > > the deadline or it fails to meet the deadline - not both. I can see
> > > how this could be tricky to guarantee though
>
> > > On Apr 12, 11:15 pm, "Ikai L (Google)"  wrote:
> > > > A possible solution would be to store emails where you have already sent
> > > a
> > > > message to in Memcache. If the tasks get retried, you check for the
> > > presence
> > > > of a key and email hash. If it exists, you don't send the message. If it
> > > > does not, you send the message and insert into Memcache.
>
> > > > On Tue, Apr 6, 2010 at 3:33 PM, Ubaldo Huerta  wrote:
> > > > > I have a task that sends a single email which works well, but every
> > > > > now and then (every 100 emails or so, my guess), the tasks get's
> > > > > retried because of an exception is thrown while sending the email
> > > > > message. The problem is that the email message is actually sent even
> > > > > though the exception below is thrown. So, naturally, I'm lossing face
> > > > > sending duplicate emails. Is there a way around this before the bug
> > > > > gets fixed? :-(
>
> > > > > File "/base/python_lib/versions/1/google/appengine/api/mail.py", line
> > > > > 742, in send
> > > > >    make_sync_call('mail', self._API_CALL, message, response)
> > > > >  File "/base/python_lib/versions/1/google/appengine/api/
> > > > > apiproxy_stub_map.py", line 78, in MakeSyncCall
> > > > >    return apiproxy.MakeSyncCall(service, call, request, response)
> > > > >  File "/base/python_lib/versions/1/google/appengine/api/
> > > > > apiproxy_stub_map.py", line 278, in MakeSyncCall
> > > > >    rpc.CheckSuccess()
> > > > >  File "/base/python_lib/versions/1/google/appengine/api/
> > > > > apiproxy_rpc.py", line 126, in CheckSuccess
> > > > >    raise self.exception
> > > > > DeadlineExceededError: The API call mail.Send() took too long to
> > > > > respond and was cancelled.
>
> > > > > --
> > > > > 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 > > > >  e...@googlegroups.com> > > e...@googlegroups.com>
> > > > > .
> > > > > For more options, visit this group at
> > > > >http://groups.google.com/group/google-appengine?hl=en.
>
> > > > --
> > > > Ikai Lan
> > > > Developer Programs Engineer, Google App Enginehttp://
> > > googleappengine.blogspot.com|http://twitter.com/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-appeng...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > google-appengine+unsubscr...@googlegroups.com > >  e...@googlegroups.com>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/google-appengine?hl=en.
>
> > --
> > Ikai Lan
> > Developer Programs Engineer, Google App 
> > Enginehttp://googleappengine.blogspot.com|htt