Metadata-Version: 2.1
Name: omq
Version: 0.5.5
Summary: A package wrap NNG
Home-page: https://github.com/rty813/omq
Author: rty813
Author-email: zjy523213189zjy@gmail.com
License: UNKNOWN
Description: # omq
        
        Omq is a IPC that uses [Nanomsg](https://nanomsg.org/) under the hood. It likes MQTT in some degree.
        
        ### Concept
        nanomsg is a socket library that provides several common communication patterns. It aims to make the networking layer fast, scalable, and easy to use. Implemented in C, it works on a wide range of operating systems with no further dependencies. But its sub-pub mode is not very good for us to use. So, omq bornd. Through omq, you can easily publish and subscribe message like MQTT.
        
        ## Installation
        ```
        pip install git+https://cloud.orca-tech.cn:9091/rty813/omq.git
        ```
        
        Omq requires python 3.6+ and CMake 3.13+
        
        ## Usage
        ### Bus
        ![](https://cloud.orca-tech.cn:9091/rty813/omq/-/raw/0739c2bbfea64253669ca9b03fd065feb1410524/assets/bus.png)
        ```python
        # node1.py
        import omq
        
        with omq.Bus() as node:
            node.publish('test', 'hello world')
        ```
        
        
        ```python
        # node2.py
        import omq
        
        def on_message(topic, payload):
            print(f'{topic} - {payload}')
        
        with omq.Bus() as node:
            node.on_message = on_message
            node.subscribe(['test', 'test/#'])
            node.loop_forever()
        ```
        
        ---
        ### REQ/REP
        ![](https://cloud.orca-tech.cn:9091/rty813/omq/-/raw/0739c2bbfea64253669ca9b03fd065feb1410524/assets/req-rep.png)
        ```python
        # rep.py
        import omq
        
        def handler(topic, payload):
            print(topic, payload)
            # Handle data...
            return 'ok'
        
        with omq.Rep(omq.Addr.MAIN, handler) as node:
            node.loop_forever()
        ```
        
        ```python
        # req.py
        import omq
        
        res = omq.req(omq.Addr.MAIN, 'test', 'req data')
        print(res)  # ok
        ```
        
        ---
        ### Supernode/Slavenode
        ![](https://cloud.orca-tech.cn:9091/rty813/omq/-/raw/0739c2bbfea64253669ca9b03fd065feb1410524/assets/super-slave.png)
        ```python
        # Supernode.py
        import omq
        
        count = 0
        node = omq.SuperNode()
        
        def on_message(slave_id, payload):
            global count
            count += 1
            if count % 3 == 0:
                print(f'send: {slave_id}')
                node.publish(slave_id, 'Recv')
        
            print(f'recv: {slave_id} - {payload}')
        
        node.on_message = on_message
        node.loop_forever()
        ```
        
        ```python
        # Slave.py
        import omq
        import time
        
        node = omq.SlaveNode('node1', '127.0.0.1')
        
        def on_message(payload):
            print('recv: ' + payload)
        
        node.on_message = on_message
        
        node.loop_start()
        
        while True:
            try:
                node.publish({'a': time.time(), 'b': 2})
                time.sleep(1)
            except:
                node.close()
                break
        ```
        
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
