More Related Content
Similar to Python alapu mobil backend
Similar to Python alapu mobil backend (20)
Python alapu mobil backend
- 2. GAE Python
● Python 2.7
● WSGI, webapp2
● db, memcache, cloud-sql, url fetch,
blobstore, users, unit testing ...
● django (django-nonrel, django+cloud-sql)
- 6. ExceptionHandlerViewMeta
class ReferenceErrorMeta(MethodViewType):
def __new__(mcs, name, bases, odict):
if 'get' in odict:
odict['get'] = mcs.wrapmethod(odict['get'])
return MethodViewType.__new__(mcs, name, bases, odict)
@staticmethod
def wrapmethod(method):
@wraps(method)
def wrapper(self, *args, **kwargs):
try:
return method(self, *args, **kwargs)
except db.ReferencePropertyResolveError:
return self.failure(10, 'Reference object seems to be deleted.')
return wrapper
- 7. DB: a lekérdezés pénz
● NE előre optimalizálj!
● cache: memcache, request scope cache
● aggregálni, okosan
● Mérj! (GAE profiler, datastore stats)
- 9. class CachedReferenceProperty(db.ReferenceProperty):
def __get__(self, model_instance, model_class):
...
# instance = get(reference_id) # WTF?
instance = self.reference_class.get(reference_id)
if instance is None:
# Feature check vs. isinstance
if hasattr(model_instance, 'update_references'):
model_instance.update_references()
raise db.ReferencePropertyResolveError(...)
CachedReferenceProperty
- 10. class CachedReferenceProperty(db.ReferenceProperty):
def __get__(self, model_instance, model_class):
...
# instance = get(reference_id) # WTF?
instance = self.reference_class.get(reference_id)
if instance is None:
# Feature check vs. isinstance
if hasattr(model_instance, 'update_references'):
model_instance.update_references()
raise db.ReferencePropertyResolveError(...)
Aggregáció