Mind that

@cache(request.env.path_info+request.env.query_string,
time_expire=3600, cache_model=cache.ram)

my end up caching a lot of stuff and cause out of memory problems.



Is there a way on GAE to have a normal form that includes a file
upload for the blobstore? I mean a form that includes other fields
that go in db normally?

Some people have reported problems when videos where stored in
blobstore. Do you have any experience with it?


On Sep 15, 5:59 pm, howesc <how...@umich.edu> wrote:
> I have just such a setup - i'd give you the URL to the site, but it's
> not public yet....remind me in a week or two.
>
> The link Martin gives is the best bit of blobstore info that i have
> found for web2py yet.  i (cfhowes) wrote the 2 comments, so please let
> me know if they don't work - i may have made fixes and not updated the
> post.
>
> also, i created a method that does image resizing and caches the image
> in memory for the gallery page, so yes the first load of the page may
> be slow (this also depends on frequency of use of the app on GAE), but
> subsequent visits are pretty quick.
>
> here's the caching image resizing download method:
>
> @cache(request.env.path_info+request.env.query_string,
> time_expire=3600, cache_model=cache.ram)
> def download():
>
>     #handle non-gae download
>     if not request.env.web2py_runtime_gae or not request.args[0]:
>         return response.download(request,db)
>
>     #handle gae download
>     my_uploads=db(db.artwork.image==request.args[0]).select()[0]
>     if not my_uploads.blob_key:
>         return None
>     blob_info = blobstore.get(my_uploads.blob_key)
>
>     response.headers['Content-Type'] = blob_info.content_type;
>     response.headers['Content-Disposition'] = "attachment; filename=
> %s" % blob_info.filename
>     #response.headers['Cache-Control'] = "max-age=3600, must-
> revalidate"
>
>     if (len(request.args) > 1 and request.args[1]) or
> request.vars.width:
>         if (len(request.args) > 1 and request.args[1]):
>             request.vars.width = request.args[1]
>         from google.appengine.api import images
>         img = images.Image(blob_key=my_uploads.blob_key)
>         if not request.vars.height:
>             img.resize(int(request.vars.width))
>         else:
>             logging.info("resize width and height")
>             img.resize(int(request.vars.width),
> int(request.vars.height))
>         return img.execute_transforms(images.JPEG)
>     else:
>         response.headers['X-AppEngine-BlobKey'] = my_uploads.blob_key;
>         return response.body.getvalue()
>
> enjoy!
>
> On Sep 15, 3:23 am, "Martin.Mulone" <mulone.mar...@gmail.com> wrote:
>
> > First to use blobstore you have to enabled billing. Yes for your
> > approach i think the best is to use blobstore in gae.
>
> > Take a look to this:http://www.web2pyslices.com/main/slices/take_slice/63
>
> > And to display images use the new introduce function get_serving_url
> > is really fast and doesnt consume much resources
> > you have to store blob_key)
>
> > def _response_image(table_name='images',image_size=64):
> >     if request.env.web2py_runtime_gae:
> >         from google.appengine.ext import blobstore
> >         from google.appengine.api import images
>
> >         if not request.args:
> >             raise HTTP(404)
> >         myimages=db(db[table_name].image==request.args[0]).select()
> >         if myimages:
> >             myimage = myimages[0]
> >             if myimage.blob_key:
> >                 if GAE_SERVING_IMAGE:
> >                     image_serving =
> > images.get_serving_url(myimage.blob_key,image_size)
> >                     return image_serving
>
> > On 15 sep, 07:08, István Gazsi <theag...@gmail.com> wrote:
>
> > > Hi everybody!
>
> > > As part of a website I try to make an image gallery in web2py. The
> > > database model is simple: there is a 100x100 thumbnail, the whole
> > > picture, and (optionally) the image's title.
>
> > > The website runs on Google App Engine and web2py v1.83.2 for now.
> > > There are multiple problems with it. First, I can only upload images
> > > under 1MB. Second, the gallery page loads very slowly (I make a select
> > > for only 25 records in web2py), and in the GAE logs there is always
> > > warnings about memory usage.
>
> > > For the first problem the solution would be using the GAE blobstore,
> > > but I don't really know how to do that. Is it implemented in web2py?
> > > For the second problem I don't know the solution.
>
> > > If you would do an image gallery like mine from the ground up, how
> > > would you do that? And do you have any advices about my problems?
>
> > > Thanks in advance!
>
>

Reply via email to