I store user-uploaded images in the Google App Engine datastore as db.Blob, as proposed in the docs. I then serve those images on /images/.jpg
db.Blob
/images/.jpg
By the way, thanks to webob, webapp.RequestHandler provides easy way to check If-None-Match.
if etag in self.request.if_none_match: pass # do something