1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openforce-zbus-python

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
Readme.md

zbus-python-client

zbus стремится сделать Message Queue и Remote Procedure Call быстрыми, лёгкими и простыми в использовании для создания собственной сервис-ориентированной архитектуры на различных платформах. Проще говоря, zbus = mq + rpc.

При разработке протокола и компонентов zbus тщательно придерживался принципа KISS (Keep It Simple and Stupid), но при этом обеспечивает мощность и гибкость.

Чтобы начать работу с zbus, обратитесь к https://gitee.com/rushmore/zbus.

Начало работы

pip install zbuspy
  • zbus.py работает как с python2.x, так и с python3.x.

Демонстрация API

Демонстрирует только суть API, более настраиваемые варианты использования требуют вашего дальнейшего интереса.

Отправка сообщения

from zbus import MqClient, Message

def onopen(client):
    msg = Message()
    msg.headers.cmd = 'pub'
    msg.headers.mq = 'MyMQ'
    msg.body = 'hello from python'

    client.invoke(msg, lambda res: print(res) )

client = MqClient('localhost:15555')
client.onopen = onopen
client.connect()

Получение сообщения

from zbus import MqClient, Message

mq = 'MyMQ'
channel = 'MyChannel'

def create_mq(client):
    msg = Message()
    msg.headers.cmd = 'create'
    msg.headers.mq = mq
    msg.headers.channel = channel 
    
    client.invoke(msg, lambda res: print(res)) #lambda

def onopen(client):
    
    create_mq(client)
    
    msg = Message()
    msg.headers.cmd = 'sub' #sub on channel of mq
    msg.headers.mq = mq
    msg.headers.channel = channel 
    
    def cb(res):
        print(res)
    
    client.invoke(msg, cb)

def message_handler(msg):
    print(msg)

client = MqClient('localhost:15555')
client.onopen = onopen
client.add_mq_handler(mq, channel, message_handler)
client.connect() 

Клиент RPC

from zbus import RpcClient   
rpc = RpcClient('localhost:15555', mq='MyRpc')

res = rpc.example.plus(1,2) 
print(res)

rpc.close()

Сервис RPC

from zbus import RpcServer, Message, RequestMapping


class MyService: 
    
    def echo(self, ping):
        return str(ping)
    
    def getString(self, s):
        return str(s)
        
    def plus(self, a, b):  
        return int(a) + int(b) 
    
    def testEncoding(self, msg): #msg -- request message
        print(msg)
        return u'中文'
    
    def noReturn(self):
        pass
    
    def home(self):
        res = Message()
        res.status = 200
        res.headers['content-type'] = 'text/html; charset=utf8'
        res.body = '<h1> from Python </h1>'
        return res
    
    def getBin(self):
        b = bytearray(10)
        import base64
        return base64.b64encode(b).decode('utf8')
    
    def throwException(self):
        raise Exception("runtime exception from server")
    
    @RequestMapping(path='/m', method='POST') #change path
    def map(self): 
        return {
            'key1': 'mykey',
            'key2': 'value2',
            'key3': 2.5
        } ```

def testTimeout(self): import time time.sleep(20)

''' Wait message from zbus(MQ), mount rpc handlers ''' p = RpcProcessor() p.mount('/', MyService()) #relative mount url

server = RpcServer(p) #When auth required #server.enable_auth('2ba912a8-4a8d-49d2-1a22-198fd285cb06', '461277322-943d-4b2f-b9b6-3f860d746ffd') #apiKey + secretKey server.mq_server_address = 'localhost:15555' #server.mq_server_address = '111.230.136.74:15555' server.mq = '/' #mount to the root url of zbus server server.mq_mask = Protocol.MASK_DELETE_ON_EXIT#delete on exit server.start()


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

zbus python client. Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/openforce-zbus-python.git
git@api.gitlife.ru:oschina-mirror/openforce-zbus-python.git
oschina-mirror
openforce-zbus-python
openforce-zbus-python
master