示例#1
0
 def txn():
     """ lock in transaction to avoid races between Tasks """
     entity = _FantasmTaskSemaphore.get_by_key_name(self.semaphoreKey)
     if entity:
         if entity.payload != payload:
             self.logger.critical("Run-once semaphore datastore payload read error.")
         return entity.payload
示例#2
0
 def __isFirstExecution(self, taskName, retryCount):
     """ Ensures that the task has not been executed before. Meant to be run in a transaction. """
     firstExecution = False
     keyName = '%s--%s' % (taskName, retryCount)
     existingTaskName = _FantasmTaskSemaphore.get_by_key_name(keyName)
     if not existingTaskName:
         _FantasmTaskSemaphore(key_name=keyName).put()
         firstExecution = True
     return firstExecution
示例#3
0
 def txn():
     """ lock in transaction to avoid races between Tasks """
     entity = _FantasmTaskSemaphore.get_by_key_name(self.semaphoreKey)
     if not entity:
         _FantasmTaskSemaphore(key_name=self.semaphoreKey, payload=payload).put()
         memcache.set(self.semaphoreKey, payload)
         return (True, payload)
     else:
         if entity.payload != payload:
             self.logger.critical("Run-once semaphore datastore payload write error.")
         memcache.set(self.semaphoreKey, entity.payload) # maybe reduces chance of ejection???
         return (False, entity.payload)