# Copyright 2020 The gRPC Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import asyncio import logging from grpc.experimental import aio from src.proto.grpc.testing import worker_service_pb2_grpc from tests_aio.benchmark import worker_servicer async def run_worker_server(port: int) -> None: server = aio.server() servicer = worker_servicer.WorkerServicer() worker_service_pb2_grpc.add_WorkerServiceServicer_to_server( servicer, server ) server.add_insecure_port("[::]:{}".format(port)) await server.start() await servicer.wait_for_quit() await server.stop(None) if __name__ == "__main__": logging.basicConfig(level=logging.DEBUG) parser = argparse.ArgumentParser( description="gRPC Python performance testing worker" ) parser.add_argument( "--driver_port", type=int, dest="port", help="The port the worker should listen on", ) parser.add_argument( "--uvloop", action="store_true", help="Use uvloop or not" ) args = parser.parse_args() if args.uvloop: import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) loop = uvloop.new_event_loop() asyncio.set_event_loop(loop) asyncio.get_event_loop().run_until_complete(run_worker_server(args.port))