Inspired by pythons new asyncio, this package implements the most basic synchronization primitives to work with ndb's tasklets for the Google AppEngine (GAE)
pip install ndb-x
We have the three primitives Lock
, Semaphore
and BoundedSemaphore
. Usage is, what you expect, straightforward:
from google.appengine.ext import ndb from ndbx.locks import Lock lock = Lock() @ndb.tasklet def work_async(): # using a context-manager will release the lock automatically with (yield lock.acquire()): rv = yield do_something_async() @ndb.tasklet def traditional_flow(): yield lock.acquire() try: # do something finally: lock.release()