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

OSCHINA-MIRROR/paddlepaddle-PLSC

Клонировать/Скачать
face_service.py 2.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
MRXLT Отправлено 18.12.2019 05:42 fec841a
# coding:utf-8
import sys
import time
from base64 import b64encode
import ujson
import os
from PIL import Image
_ver = sys.version_info
is_py2 = (_ver[0] == 2)
is_py3 = (_ver[0] == 3)
if is_py2:
import httplib
if is_py3:
import http.client as httplib
class FaceService():
def __init__(self):
self.con_list = []
self.con_index = 0
self.server_list = []
def connect(self, server='127.0.0.1:8010'):
self.server_list.append(server)
con = httplib.HTTPConnection(server)
self.con_list.append(con)
def connect_all_server(self, server_list):
for server in server_list:
self.server_list.append(server)
self.con_list.append(httplib.HTTPConnection(server))
def infer(self, request_msg):
try:
cur_con = self.con_list[self.con_index]
cur_con.request('POST', "/FaceClassifyService/inference",
request_msg, {"Content-Type": "application/json"})
response = cur_con.getresponse()
response_msg = response.read()
#print(response_msg)
response_msg = ujson.loads(response_msg)
self.con_index += 1
self.con_index = self.con_index % len(self.con_list)
return response_msg
except BaseException as err:
del self.con_list[self.con_index]
print(err)
if len(self.con_list) == 0:
print('All server failed')
return 'fail'
else:
self.con_index = 0
return 'retry'
def encode(self, images):
request = []
for image in range(images):
request.append(b64encode(image).decode('ascii'))
#request
request = {"base64_string": request}
request_msg = ujson.dumps(request)
response_msg = self.infer(request_msg)
result = []
for msg in response_msg["instance"]:
result.append(msg["embedding"])
#request end
return result
def close(self):
for con in self.con_list:
con.close()
def test():
with open('./data/00000000.jpg', 'rb') as f:
image = f.read()
bc = FaceService()
bc.connect('127.0.0.1:8010')
result = bc.encode([image])
print(result[0])
bc.close()
if __name__ == '__main__':
test()
1
https://api.gitlife.ru/oschina-mirror/paddlepaddle-PLSC.git
git@api.gitlife.ru:oschina-mirror/paddlepaddle-PLSC.git
oschina-mirror
paddlepaddle-PLSC
paddlepaddle-PLSC
master