Skip to main content

rabbitmq-subprocess-client is a RabbitMQ client (based on `pika`) spawning tasks as subprocess, allowing handling segfault gracefully.

Project description

RabbitMQ-subprocess-client

RabbitMQ-subprocess-client is a RabbitMq client (based on pika) spawning tasks as subprocess, allowing handling segfault gracefully.

Install

pip install rabbitmq-subprocess-client

usage

import os
from concurrent.futures import TimeoutError
import traceback
from rabbitmq_subprocess_client import Runner, Consumer

class MyConsumer(Consumer):
    def consume_main(self, basic_deliver, msg):
        print(f'pre-processing message: {msg} in process: {os.getpid()}')
        try:
            args = []
            kwargs = {}
            self.exec(msg, *args, **kwargs)  # This will run the consume_subprocess method in a subprocess
            self.acknowledge_message(basic_deliver.delivery_tag)
        except TimeoutError:
            self.nacknowledge_message(basic_deliver.delivery_tag)
        except BaseException:
            exc_msg = traceback.format_exc()
            print(exc_msg)
            self.nacknowledge_message(basic_deliver.delivery_tag)

    @staticmethod
    def consume_subprocess(msg, *args, **kwargs):
        print(f'processing message: {msg} in process: {os.getpid()}')

worker = Runner(
    'my_queue', 
    MyConsumer, 
    host="127.0.0.1",
    port="5672",
    user="guest",
    password="guest",
    timeout=None,
)
worker.run()

develop

poetry shell
poetry install
pytest
pre-commit install

Publish new version

poetry publish --build --username= --password=

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

rabbitmq_subprocess_client-1.0.0.tar.gz (6.5 kB view hashes)

Uploaded Source

Built Distribution

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