I added ~ 1/4 million simple Items last night and managed to consume
12 hours of CPU time in under 1.5 hours of wall clock time.

Here is the model, below is the code.  I don't know how much simpler
this could get.  Account and Tenant are essentially EMPTY objects
having keys and their name in the Key field as well, but otherwise
empty.

class FlatItem(db.Model):
    account = db.ReferenceProperty(Account) populated with account
    tenant = db.ReferenceProperty(Tenant) populated with tenant
    refersto = db.SelfReferenceProperty() None
    when = db.DateTimeProperty()  populated
    amount = db.FloatProperty() populated with random value
    tax = db.FloatProperty() None
    text = db.StringProperty(multiline=True) about 420 characters (not
sent in request)
    image = db.BlobProperty() None


    def post(self):
        start = datetime.now()
        account_keys = self.request.get('account_name',
allow_multiple=True)
        added = 0
        for account_key in account_keys:
            account = Account.get_by_key_name(account_key)
            if account == None:
                self.error(404)
                self.response.out.write("Account '%s' not found" %
self.request.get('account_name'))
                return
            try:
                tenant = Tenant.get(self.request.get('tenant_key'))
                if tenant == None:
                    raise db.BadKeyError
            except db.BadKeyError:
                    self.error(404)
                    self.response.out.write("Tenant key '%s' not
found" % self.request.get('tenant_key'))
                    return

            when = datetime.strptime(self.request.get('when'), "%Y/%m/
%d %H:%M:%S")

            i = FlatItem(tenant=tenant, account=account,
amount=random.random()*400, when=when,
                     text="Flat %s blah blah blah blah..(~ 420
characters).. blah blah blah." % account.key())
            key = i.put()
            added += 1

        end = datetime.now()
        s = "Added %d Flat Item(s) in %d microseconds" % (added, (end-
start).microseconds,)

        logging.info(s)
        self.response.out.write("%s<br/><a href='/flatitems/add'>Add
more flat items</a>" % s)


Funny thing is I burned up the 12 hours I had to pay for FASTER than
the 6.5 hours I got for free.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to