Skip to content

sprockets/sprockets.mixins.avro-publisher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sprockets.mixins.avro-publisher

AMQP Publishing Mixin for publishing a message as an Avro datum.

Version Downloads

Installation

sprockets.mixins.avro-publisher is available on the Python Package Index and can be installed via pip or easy_install:

pip install sprockets.mixins.avro-publisher

Requirements

  • sprockets.mixins.amqp>=3.0.0
  • fastavro>=0.10.1,<2.0.0
  • tornado>=6,<7

Example

This examples demonstrates the most basic usage of sprockets.mixins.avro-publisher

export AMQP_URL="amqp://user:password@rabbitmq_host:5672/%2f"
python my-example-app.py
from tornado import gen
from tornado import web
from sprockets.mixins import avro_publisher

def make_app(**settings):
    settings = {'avro_schema_uri_format': 'http://my-schema-repository/%(name)s.avsc'}
    application = web.Application(
        [
            web.url(r'/', RequestHandler),
        ], **settings)

    avro_publisher.install(application)
    return application

class RequestHandler(avro_publisher.PublishingMixin, web.RequestHandler):

    async def get(self, *args, **kwargs):
        body = {'request': self.request.path, 'args': args, 'kwargs': kwargs}
        await self.avro_amqp_publish(
            'exchange',
            'routing.key',
            'avro-schema-name'
            body)

if __name__ == "__main__":
    application = make_app()
    application.listen(8888)
    logging.basicConfig(level=logging.INFO)
    ioloop.IOLoop.current().start()

Source

sprockets.mixins.avro-publisher source is available on Github at https://github.com/sprockets/sprockets.mixins.avro-publisher

License

sprockets.mixins.avro-publisher is released under the 3-Clause BSD license.