The Pulsar Python client

Pulsar version 2.0

The documentation that you’re reading is for the 2.0 release of Apache Pulsar. For more information on Pulsar 2.0, see this guide.

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 my-topic topic and send 10 messages on that topic:

import pulsar

client = pulsar.Client('pulsar://localhost:6650')

producer = client.create_producer('my-topic')

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


Consumer example

This creates a consumer with the my-subscription subscription on the 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('my-topic', 'my-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('my-topic', msg_id)

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