Skip to main content

pipelinepy

This is an OAuth Python client callback for the kafka-python-ng client implementation. It is designed to provide a simple and straightforward interface for authenticating Adobe IMS (Identity Management System) users into Kafka.

Installation

Install pipelinepy using pip:

pip install pipelinepy

Usage

Pipelinepy is designed to be used with the kafka-python-ng client implementation. To use it, you need to create an instance of the ImsTokenProvider class and pass it to the sasl_oauth_token_provider parameter of the Kafka producer and consumer.

pip install kafka-python-ng pipelinepy
#!/usr/bin/env python
import threading, time

from kafka import KafkaConsumer, KafkaProducer
from pipelinepy import ImsTokenProvider


class Producer(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.stop_event = threading.Event()

    def stop(self):
        self.stop_event.set()

    def run(self):
        producer = KafkaProducer(bootstrap_servers=['broker1:9092','broker2:9092','broker3:9092'],
                                 sasl_mechanism='OAUTHBEARER',
                                 security_protocol='SASL_SSL',
                                 sasl_oauth_token_provider=ImsTokenProvider())

        while not self.stop_event.is_set():
            producer.send('some_existing_topic', b"Hello, world!")
            producer.send('some_existing_topic', b"Salutare, lume!")
            producer.send('some_existing_topic', b"\xc2\xa1Hola, mundo!")
            time.sleep(1)

        producer.close()


class Consumer(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.stop_event = threading.Event()

    def stop(self):
        self.stop_event.set()

    def run(self):
        consumer = KafkaConsumer(bootstrap_servers=['broker1:9092','broker2:9092','broker3:9092'],
                                 auto_offset_reset='earliest',
                                 group_id='test-cg',
                                 consumer_timeout_ms=1000,
                                 sasl_mechanism='OAUTHBEARER',
                                 security_protocol='SASL_SSL',
                                 sasl_oauth_token_provider=ImsTokenProvider())
        consumer.subscribe(['some_existing_topic'])

        while not self.stop_event.is_set():
            for message in consumer:
                print(message)
                if self.stop_event.is_set():
                    break

        consumer.close()


def main():

    tasks = [
        Producer(),
        Consumer()
    ]

    # Start threads of a publisher/producer and a subscriber/consumer to 'my-topic' Kafka topic
    for t in tasks:
        t.start()

    time.sleep(30)

    # Stop threads
    for task in tasks:
        task.stop()

    for task in tasks:
        task.join()


if __name__ == "__main__":
    main()

Environment Variables

The following environment variables need to be set:

  • IMS_URL: The base URL of the IMS service (does not include the '/ims/token/v1' part).
  • IMS_CLIENT_ID: The client ID for the IMS service.
  • IMS_CLIENT_SECRET: The client secret for the IMS service.
  • IMS_CLIENT_CODE: The client code for the IMS service.

Contributing

Contributions are welcome. Please submit a pull request or create an issue to discuss the changes you want to make.

Metadata

Release files for pipelinepy 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pipelinepy 1.0.5
File Size Uploaded
pipelinepy-1.0.5.tar.gz 2.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pipelinepy 1.0.5
File Interpreter ABI Platform
pipelinepy-1.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 5.8 kB

Release files / pipelinepy-1.0.5.tar.gz

Download URL pipelinepy-1.0.5.tar.gz
Size 2.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2e8393c2892fb964b2242e6da42a4fb617baea8562bbaf63b7372accbc7e613f
BLAKE2b-256 checksum
How to use checksums
e68269849a40fe25f4262faac31c7598ff084c0f3126ea363885204e169863af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.11.9 Darwin/23.4.0

Release files / pipelinepy-1.0.5-py3-none-any.whl

Download URL pipelinepy-1.0.5-py3-none-any.whl
Size 3.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cbd4797cdc5138e29b7104bcf8394075902e5f1ac3a59125707e6d314823c21e
BLAKE2b-256 checksum
How to use checksums
7df131c9a7e03e073fdad50faedf9b724db587e1884812530b92377b252a2ae4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.11.9 Darwin/23.4.0

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files

1.0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page