The Pulsar Python client

The Pulsar Python client library is a wrapper over the existing C++ client library and exposes all of the same features. You can find the code in the python subdirectory of the C++ client code.


You can install the pulsar-client library either via PyPi, using pip, or by building the library from source.

Installation using pip

To install the pulsar-client library as a pre-built package using the pip package manager:

$ pip install pulsar-client

Installation via PyPi is available for the following Python versions:

Platform Supported Python versions
MacOS 10.12 (Sierra) and 10.13 (High Sierra) 2.7, 3.6
Linux 2.7, 3.3, 3.4, 3.5, 3.6

Installing from source

To install the pulsar-client library by building from source, follow these instructions and compile the Pulsar C++ client library. That will also build the Python binding for the library.

To install the built Python bindings:

$ git clone
$ cd pulsar/pulsar-client-cpp/python
$ sudo python install

API Reference

The complete Python API reference is available at api/python.


Below you’ll find a variety of Python code examples for the pulsar-client library.

Producer example

This creates a Python producer for the persistent://sample/standalone/ns/my-topic topic and send 10 messages on that topic:

import pulsar

TOPIC = 'persistent://sample/standalone/ns/my-topic'
PULSAR_SERVICE_URL = 'pulsar://localhost:6650'

client = pulsar.Client(PULSAR_SERVICE_URL)

producer = client.create_producer(TOPIC)

for i in range(10):
    producer.send('Hello-%d' % i)


Consumer example

This creates a consumer with the my-sub subscription on the persistent://sample/standalone/ns/my-topic topic, listen for incoming messages, print the content and ID of messages that arrive, and acknowledge each message to the Pulsar broker:


consumer = client.subscribe(TOPIC, SUBSCRIPTION)

while True:
    msg = consumer.receive()
    print("Received message '%s' id='%s'",, msg.message_id())


Reader interface example

You can use the Pulsar Python API to use the Pulsar reader interface. Here’s an example:

# MessageId taken from a previously fetched message
msg_id = msg.message_id()

reader = client.create_reader(TOPIC, msg_id)

while True:
    msg = reader.receive()
    print("Received message '%s' id='%s'",, msg.message_id())
    # No acknowledgment