mirror of
https://github.com/actix/examples
synced 2024-11-30 17:14:35 +01:00
69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
#!/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
|
|
# 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()
|