def get_by_id(cls, ids, parent=None): count = 0 while count < settings.rotmodel["RETRY_ATTEMPTS"]: try: return db.Model.get_by_id(ids, parent) except db.Timeout(): count += 1 time.sleep(count * settings.rotmodel["RETRY_INTERVAL"]) else: raise db.Timeout()
def get(cls, keys): count = 0 while count < settings.rotmodel["RETRY_ATTEMPTS"]: try: return db.Model.get(keys) except db.Timeout(): count += 1 time.sleep(count * settings.rotmodel["RETRY_INTERVAL"]) else: raise db.Timeout()
def delete(self): count = 0 while count < settings.rotmodel["RETRY_ATTEMPTS"]: try: return db.Model.delete(self) except db.Timeout(): count += 1 time.sleep(count * settings.rotmodel["RETRY_INTERVAL"]) else: raise db.Timeout()
def test_timeout_1(**kwargs): counter = kwargs.get('counter') # Let it pass only in the last attempt if counter[0] < 3: counter[0] += 1 raise db.Timeout()
def test_timeout_2(**kwargs): counter = kwargs.get('counter') # Let it pass only in the last attempt if counter[0] < 5: counter[0] += 1 raise db.Timeout() raise ValueError()
def put(self): count = 0 while count < 3: try: return db.Model.put(self) except db.Timeout: count += 1 else: raise db.Timeout()
def put(self): count = 0 while count < 3: try: ret = db.Model.put(self) if ret: break except db.Timeout: count += 1 else: raise db.Timeout() remove(self.key()) return ret
def get_by_key_name(cls, key_names, parent=None): if isinstance(parent, db.Model): parent = parent.key() key_names, multiple = datastore.NormalizeAndTypeCheck( key_names, basestring) keys = [ datastore.Key.from_path(cls.kind(), name, parent=parent) for name in key_names ] count = 0 if multiple: while count < settings.rotmodel["RETRY_ATTEMPTS"]: try: return db.get(keys) except db.Timeout(): count += 1 time.sleep(count * settings.rotmodel["RETRY_INTERVAL"]) else: while count < settings.rotmodel["RETRY_ATTEMPTS"]: try: return db.get(*keys) except db.Timeout(): count += 1 time.sleep(count * settings.rotmodel["RETRY_INTERVAL"])
def testKindsRenderingFromStats(self): """Test list of kinds renders in list_actions with kinds timing out.""" self.mox = mox.Mox() self.mox.StubOutWithMock(Kind, 'all') Kind.all().AndRaise(db.Timeout('Timeout')) self.mox.ReplayAll() try: stat_test_kinds = ['test1', 'test2', 'test3'] self.CreateStatEntity(stats.GlobalStat.STORED_KIND_NAME) for kind in stat_test_kinds: self.CreateStatEntity(stats.KindStat.STORED_KIND_NAME, kind) self.handler.get() kind_list = [ stat['kind_name'] for stat in self.params['kind_stats'] ] self.assertListEqual(stat_test_kinds, kind_list) self.mox.VerifyAll() finally: self.mox.UnsetStubs()
def testRemotePutRemoteException(self): """Test that a remote exception is bubbled back up.""" put_request = self.CreatePutRequest('remoteapp') put_response = datastore_pb.PutResponse() expected_post = self.RemoteApiRequest('Put', put_request).Encode() expected_exception = db.Timeout('too slow') remote_response = remote_api_pb.Response() remote_response.mutable_exception().set_contents( pickle.dumps(expected_exception)) expected_response = remote_response.Encode() remote_api_put_stub.urlfetch.fetch( self.remote_url, expected_post, urlfetch.POST, {'X-appcfg-api-version': '1', 'auth': 'good'}, follow_redirects=False ).AndReturn(MockUrlfetchResult(200, expected_response)) self.mox.ReplayAll() self.assertRaises(db.Timeout, self.stub.MakeSyncCall, 'datastore_v3', 'Put', put_request, put_response)
def test_timeout_3(**kwargs): # Never let it pass. counter = kwargs.get('counter') counter[0] += 1 raise db.Timeout()
def flush_function(self, items, options): FlushFunction.calls.append((items, dict(options))) if len(FlushFunction.calls) <= FlushFunction.timeouts: raise db.Timeout() FlushFunction.persistent_storage.extend(items)