You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.8 KiB

# -*- coding: utf-8 -*-
'''
@Author: captainfffsama
@Date: 2023-02-02 16:38:45
@LastEditors: captainfffsama tuanzhangsama@outlook.com
@LastEditTime: 2023-02-02 16:48:12
@FilePath: /LoFTR/start_grpc.py
@Description:
'''
from concurrent import futures
import sys
from pprint import pprint
import os
import yaml
import grpc
from src.grpc.loftr_pb2_grpc import add_LoftrServicer_to_server
import src.grpc.base_cfg as cfg
from src.grpc.server import LoFTRServer
def start_server(config):
if not os.path.exists(config):
raise FileExistsError('{} 不存在'.format(config))
cfg.merge_param(config)
args_dict: dict = cfg.param
pprint(args_dict)
grpc_args = args_dict['grpc']
model_args = args_dict['loftr']
# 最大限制为100M
server = grpc.server(
futures.ThreadPoolExecutor(max_workers=grpc_args['max_workers']),
options=[('grpc.max_send_message_length',
grpc_args['max_send_message_length']),
('grpc.max_receive_message_length',
grpc_args['max_receive_message_length'])])
loftr_server =LoFTRServer(**model_args)
add_LoftrServicer_to_server(loftr_server,server)
server.add_insecure_port("{}:{}".format(grpc_args['host'],
grpc_args['port']))
server.start()
server.wait_for_termination()
def main(args=None):
import argparse
parser = argparse.ArgumentParser(description="grpc调用loftr,需要配置文件")
parser.add_argument("-c", "--config", type=str, default="", help="配置文件地址")
options = parser.parse_args(args)
if options.config:
start_server(options.config)
if __name__ == "__main__":
rc = 1
try:
main()
except Exception as e:
print('Error: %s' % e, file=sys.stderr)
sys.exit(rc)