#!/usr/bin/env python3 # just start server and run client.py # wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-python-3.11.2.zip # unzip protobuf-python-3.11.2.zip.1 # cd protobuf-3.11.2/python/ # python3 setup.py install # pip3 install --upgrade pip # pip3 install aiohttp # python3 client.py import test_pb2 import traceback import sys import asyncio import aiohttp def op(): try: obj = test_pb2.MyObj() obj.number = 9 obj.name = 'USB' #Serialize sendDataStr = obj.SerializeToString() #print serialized string value print('serialized string:', sendDataStr) #------------------------# # message transmission # #------------------------# receiveDataStr = sendDataStr receiveData = test_pb2.MyObj() #Deserialize receiveData.ParseFromString(receiveDataStr) print('pares serialize string, return: devId = ', receiveData.number, ', name = ', receiveData.name) except(Exception, e): print(Exception, ':', e) print(traceback.print_exc()) errInfo = sys.exc_info() print(errInfo[0], ':', errInfo[1]) async def fetch(session): obj = test_pb2.MyObj() obj.number = 9 obj.name = 'USB' async with session.post('http://127.0.0.1:8081/', data=obj.SerializeToString(), headers={"content-type": "application/protobuf"}) as resp: print(resp.status) data = await resp.read() receiveObj = test_pb2.MyObj() receiveObj.ParseFromString(data) print(receiveObj) async def go(loop): obj = test_pb2.MyObj() obj.number = 9 obj.name = 'USB' async with aiohttp.ClientSession(loop=loop) as session: await fetch(session) loop = asyncio.get_event_loop() loop.run_until_complete(go(loop)) loop.close()