tcp服务消费者(python)

概述

    此示例演示如何使用python_sdk编写tcp服务消费(invoker)程序,python_sdk提供简单易用的接口给客户调用,与服务端通信/响应通告等细节sdk内部都完现了,用户无需花时间在这些细节上,而是专注于自身业务逻辑。

示例源文件python_sdk/sample_tcp_invk.cpp
示例准备:先运行服务端cppcloud_serv,记下ip地址和端口。

示例代码

    如下给出的是关键语句伪代码。

import cppcloud
import threading

invokerServiceName = 'TestPrvd' # 调用的目标服务名

# 发送调用消息的线程
def sendThread1(msg, inker):
    print(("thread sendding " + msg))
    result, rspmsg, errhand = inker.call(invokerServiceName, msg)
    print(("Response " + str(result) + "| " + rspmsg))
    if errhand: errhand(result)


def main():
    if not cppcloud.init('vpc2', 4800, svrname='InvkerTest'):
        print('CloudApp start fail, exit')
        exit(-1)

    inker = cppcloud.invokerObject(invokerServiceName)
    if inker:
        while "q" != sendStr: # 接收从键盘输入消息并发送给服务方法(开辟个线程进行)
            sendStr = input('input message to send out(input "q" exit):').strip()
            th = threading.Thread(target=sendThread1, args=(sendStr, inker))
            th.setDaemon(True)
            th.start()

    cppcloud.uninit()


if __name__ == "__main__":
    main()

说明

  1. 语句inker=cppcloud.invokerObject(regname1, regname2,..)传递所有要调用到的服务名到可变参数,返回消费者调用对象inker,主要调用其call方法完成调用获得响应;
  2. if errhand: errhand(result)是对本次调用的反馈,以便让后台得知某个服务调用时的成功次数和失败次数;

启动运行

先把示例代码中的vpc2修改为你当前的cppcloud_serv的服务地址; python sample_tcp_invk.py

演示结果

程序执行, 可以看出调用返回可以无序进行,演示流水线tcp服务invk_png

后续继续输入 invk2