Metadata-Version: 2.1
Name: pymachinery
Version: 0.0.6
Summary: Python workers for RichardKnop/machinery
Home-page: https://github.com/nmcapule/pymachinery
Author: Nathaniel M. Capule
Author-email: nmcapule@gmail.com
License: UNKNOWN
Description: # Machinery Python SDK
        
        This is a subset Python implementation of a worker for `RichardKnop/machinery`.
        
        ## Limitations
        
        - Broker is strictly only for Redis
        - BackendResult is strictly only for MongoDB
        
        ## Development Environment
        
        Use `venv` with python 3.
        
        ```shell
        # ---- Setup
        $ sudo apt install python3 python3-venv
        $ python3 -m venv ~/.venv/simcel
        # ---- Activate venv
        $ source ~/.venv/simcel/bin/activate
        (simcel) $ pip3 install -r requirements.txt
        # ---- Running
        (simcel) $ python3 main.py
        ```
        
        ## Usage
        
        ```python
        from pymachinery import Value, Machinery
        
        def add_worker(a: Value, b: Value):
            return (Value("int64", a.value() + b.value()))
        
        def multiply_worker(a: Value, b: Value):
            return (Value("int64", a.value() * b.value()))
        
        def worker(name: Value, delayms: Value):
            return (
                Value("string", f"hello {name.value()}"),
                Value("int64", delayms),
            )
        
        machinery = Machinery(
            broker_uri="redis://:helloworld@localhost:6379",
            backend_uri="mongodb://mongo:moonbucks@localhost:27017/?authSource=admin",
            queue="machinery_tasks",
        )
        machinery.register_worker("add", add_worker)
        machinery.register_worker("multiply", multiply_worker)
        machinery.register_worker("hello", worker)
        machinery.start()
        ```
        
        ### Creating a Worker
        
        Workers have these restrictions:
        
        - Inputs should be of type pymachinery.Value
        - Outputs should be of type pymachinery.Value, or a tuple of pymachinery.Value
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
