88import sys
99
1010import argparse
11- import os . path
11+ import os
1212import grpc
1313
1414from service import registry
5656# derived from the protobuf codes.
5757class CalculatorServicer (grpc_bt_grpc .CalculatorServicer ):
5858 def __init__ (self ):
59+ self .pid = os .getpid ()
5960 self .a = 0
6061 self .b = 0
6162 self .result = 0
6263 # Just for debugging purpose.
63- _LOGGER .debug ("CalculatorServicer created" )
64+ _LOGGER .debug ("[{}] CalculatorServicer created" . format ( self . pid ) )
6465
6566 # The method that will be exposed to the snet-cli call command.
6667 # request: incoming data
@@ -74,7 +75,10 @@ def add(self, request, context):
7475 self .result = Result ()
7576
7677 self .result .value = self .a + self .b
77- _LOGGER .debug ("add({},{})={}" .format (self .a , self .b , self .result .value ))
78+ _LOGGER .debug ("[{}] add({},{})={}" .format (self .pid ,
79+ self .a ,
80+ self .b ,
81+ self .result .value ))
7882 return self .result
7983
8084 def sub (self , request , context ):
@@ -83,7 +87,10 @@ def sub(self, request, context):
8387
8488 self .result = Result ()
8589 self .result .value = self .a - self .b
86- _LOGGER .debug ("sub({},{})={}" .format (self .a , self .b , self .result .value ))
90+ _LOGGER .debug ("[{}] sub({},{})={}" .format (self .pid ,
91+ self .a ,
92+ self .b ,
93+ self .result .value ))
8794 return self .result
8895
8996 def mul (self , request , context ):
@@ -92,7 +99,10 @@ def mul(self, request, context):
9299
93100 self .result = Result ()
94101 self .result .value = self .a * self .b
95- _LOGGER .debug ("mul({},{})={}" .format (self .a , self .b , self .result .value ))
102+ _LOGGER .debug ("[{}] mul({},{})={}" .format (self .pid ,
103+ self .a ,
104+ self .b ,
105+ self .result .value ))
96106 return self .result
97107
98108 def div (self , request , context ):
@@ -101,7 +111,10 @@ def div(self, request, context):
101111
102112 self .result = Result ()
103113 self .result .value = self .a / self .b
104- _LOGGER .debug ("div({},{})={}" .format (self .a , self .b , self .result .value ))
114+ _LOGGER .debug ("[{}] div({},{})={}" .format (self .pid ,
115+ self .a ,
116+ self .b ,
117+ self .result .value ))
105118 return self .result
106119
107120
@@ -154,12 +167,19 @@ def main():
154167 default = registry [service_name ]['grpc' ],
155168 type = int ,
156169 required = False )
157- args = parser .parse_args (sys .argv [1 :])
170+ parser .add_argument ("--mp" ,
171+ help = "number of concurrent processes" ,
172+ metavar = "NUMBER_OF_PROCESSES" ,
173+ default = 1 ,
174+ type = int ,
175+ required = False )
176+ args = parser .parse_args ()
177+
178+ num_processes = _PROCESS_COUNT if args .mp > _PROCESS_COUNT else args .mp
158179 with reserve_port (args .grpc_port ) as port :
159- _LOGGER .debug ("Binding to port '%s'" , port )
160180 sys .stdout .flush ()
161181 workers = []
162- for _ in range (_PROCESS_COUNT ):
182+ for _ in range (num_processes ):
163183 # NOTE: It is imperative that the worker subprocesses be forked before
164184 # any gRPC servers start up. See
165185 # https://github.com/grpc/grpc/issues/16001 for more details.
0 commit comments