Coroutine Data Access Patterns (mouthful I know) are some data access patterns I found useful building web applications that use gevent or evenlet. They mimic common Python data types like lists and dictionaries.
Coroutine Data Access Patterns (codap) are a handful of libraries to make concurrent data access simpler to use. This was originally developed for web services access data in mutliple datastores (MongoDB, S3, REST, ect). The library uses async methods (thread, eventlet or gevent) which degrades gracefully. Perfering gevent, eventlet and falling back to threading. One of those things it would be really nice to have anonymous functions in Python :(.
Key / Value (Dictionary)
Allows for a dictionary like access. This is great for caches, template rendering and since dictionaries are the most used data type it is easy to integrate into existing code.
def back(db, name):
results = KV()
results['foo'] = bar # bar is a function
results.put('cats', get_photos, id, limit=4) # get_photos is a function
results.put('monkey', back, db, name)
List that returns the responses based on the order they are added. Has been used for retrieving already sorted data that needs additional information to be rendered.
def get_stuff(db, x):
results = codap.Ordered()
for x in xrange(0, 10):
results.push(get_stuff, db, x)
for r in results: # Same order as pushed
Based on the order of the response is the order it is added to the list. Useful for making request to multiple databases. Has been used for getting a list of files from a web service and compressing them into a single zip or tar.
fr = codap.FirstReply()
for ds in datasource_list:
data = fr
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size codap-0.0.1.tar.gz (4.1 kB)||File type Source||Python version None||Upload date||Hashes View|