Metadata-Version: 2.0 Name: anypubsub Version: 0.6 Summary: A generic interface wrapping multiple backends to provide a consistent pubsub API. Home-page: http://github.com/simock85/anypubsub Author: Simone Marzola Author-email: marzolasimone@gmail.com License: UNKNOWN Keywords: pubsub pub/sub redis mongodb Platform: UNKNOWN Classifier: Development Status :: 3 - Alpha Classifier: Intended Audience :: Developers Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: License :: OSI Approved :: MIT License Requires-Dist: six Provides-Extra: amqp Requires-Dist: amqp (>=1.4.9); extra == 'amqp' Provides-Extra: mongodb Requires-Dist: pymongo (>=3); extra == 'mongodb' Provides-Extra: redis Requires-Dist: redis (>2.10); extra == 'redis' anypubsub ========= .. image:: https://travis-ci.org/smarzola/anypubsub.png?branch=master :target: https://travis-ci.org/smarzola/anypubsub .. image:: https://coveralls.io/repos/github/smarzola/anypubsub/badge.svg?branch=master :target: https://coveralls.io/github/smarzola/anypubsub?branch=master A generic interface wrapping multiple backends to provide a consistent pubsub API. Usage ------ Create a pubsub object:: from anypubsub import create_pubsub pubsub = create_pubsub('memory') or create a pubsub object from settings:: from anypubsub import create_pubsub_from_settings pubsub = create_pubsub_from_settings({'anypubsub.backend': 'memory'}, prefix='anypubsub.') Subscribe to a channel:: subscriber = pubsub.subscribe('a_channel') you can also subscribe to multiple channels:: subscriber = pubsub.subscribe('a_channel', 'b_channel') the subscriber is an iterator object that returns the next published message at each loop increment, and blocks until next message is published. Publish a message to a channel:: pubsub.publish('a_channel', 'hello world!') message = next(subscriber) assert message == 'hello world!' Supported backends --------------------- * memory * redis * mongodb * amqp (tested with rabbitmq) Backend specific optional settings ----------------------------------- redis:: host: hostname or full redis url, default: localhost port: default 6379 db: default 0 max_connections: connection pool max connections connection_pool: an already created redis-py ConnectionPool mongodb:: host: hostname or full mongodb url port: mongodb port max-pool-size: connection pool max connections client: an already created pymongo MongoClient database: database used to store messages, default anypubsub collection: collection used to store messages, default anyps_messages collection_size: messages collection size in bytes, default 10MB