Skip to main content

A simple application layer event-bus lib, support redis/mqtt/rabbitmq.

Project description

pbus

A simple application layer event-bus lib, support redis/mqtt/rabbitmq.

Install

 pip install pbus

Usage

  1. Use with Redis/MQTT/RabbitMQ Bus class.

Subscriber

import pbus
bus = pbus.RedisBus(host='127.0.0.1')   # need "pip install redis"
# or
bus = pbus.MQTTBus(host='127.0.0.1')   # need "pip install paho-mqtt"
# or
bus = pbus.RabbitMQBus(host='127.0.0.1')   # need "pip install pika"
# or
bus = pbus.MemoryBus(exchange='ex1')    # with memory, can't use in multi-processing

ps = bus.subscriber('test')
for data in ps.listen():
    print(data)

Publish

import pbus
bus = pbus.RedisBus(host='127.0.0.1')
# or
bus = pbus.MQTTBus(host='127.0.0.1')
# or
bus = pbus.RabbitMQBus(host='127.0.0.1')
bus.publish('test', 'Hello')

bus = pbus.MemoryBus(exchange='ex1')
bus.publish('test', 'Hello')
  1. Use with URI(recommend)
import pbus
bus = pbus.connect("redis://:password@127.0.0.1:6379/2")    # with db 2
# or
bus = pbus.connect("mqtt://username:password@127.0.0.1:1883")    #
# or 
bus = pbus.connect("amqp://username:password@127.0.0.1:5672/myexchange")    #  with "myexchange" exchange
# or
bus = pbus.connect("memory:/ex1")    #  with "test" exchange

# ...... other code
  1. Test event-bus speed.
  • a. Run consumer client
python -m pbus -u redis://127.0.0.1
  • b. Run producer client
python -m pbus -u redis://127.0.0.1 -p

You will see:

connecting to bus redis://127.0.0.1 ...
connecte success!
subscribing to pbus ...
subscribe success!
waiting data from pbus
1 :  count 27748 time: 5000ms speed: 5549/s total 27748
2 :  count 83135 time: 5000ms speed: 16627/s total 110883
3 :  count 86416 time: 5000ms speed: 17283/s total 197299
4 :  count 72546 time: 5000ms speed: 14509/s total 269845

Ctrl+C to stop test.

  • c. Run both consumer and producer
python -m pbus -u redis://127.0.0.1 -l

You will see:

Consumer: connecting to bus redis://127.0.0.1 ...
Consumer: connecte success!
Consumer: subscribing to pbus ...
Consumer: subscribe success!
Consumer: waiting data from pbus
Producer: connecting to bus redis://127.0.0.1 ...
Producer: connecte success!
Producer: will publish "Hello World!" to pbus
--Press Ctrl+C to stop it!--
Consumer: 1 :  count 29119 time: 5000ms speed: 5823/s total 29119
Producer: 1 :  count 29642 time: 5000ms speed: 5928/s total 29642

Click to view more information!

CHANGES

1.0.0

  • First version

1.1.0

  • Support MQTT and RabbitMQ
  • Support connect with URI

1.2.0

  • Support Memory

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pbus-1.2.0.tar.gz (18.4 kB view details)

Uploaded Source

File details

Details for the file pbus-1.2.0.tar.gz.

File metadata

  • Download URL: pbus-1.2.0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/2.7.16

File hashes

Hashes for pbus-1.2.0.tar.gz
Algorithm Hash digest
SHA256 583ac80398240b9f0f486ab549d96f620360682339cd805e8579f12ec6223339
MD5 a79557bdd016704250d692895f2abe75
BLAKE2b-256 0fc916c10fed73fadbeab325c46e4c3eef8b9cd5900944860e1df07a1c401866

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page