8
8
import sys
9
9
10
10
import argparse
11
- import os . path
11
+ import os
12
12
import grpc
13
13
14
14
from service import registry
56
56
# derived from the protobuf codes.
57
57
class CalculatorServicer (grpc_bt_grpc .CalculatorServicer ):
58
58
def __init__ (self ):
59
+ self .pid = os .getpid ()
59
60
self .a = 0
60
61
self .b = 0
61
62
self .result = 0
62
63
# Just for debugging purpose.
63
- _LOGGER .debug ("CalculatorServicer created" )
64
+ _LOGGER .debug ("[{}] CalculatorServicer created" . format ( self . pid ) )
64
65
65
66
# The method that will be exposed to the snet-cli call command.
66
67
# request: incoming data
@@ -74,7 +75,10 @@ def add(self, request, context):
74
75
self .result = Result ()
75
76
76
77
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 ))
78
82
return self .result
79
83
80
84
def sub (self , request , context ):
@@ -83,7 +87,10 @@ def sub(self, request, context):
83
87
84
88
self .result = Result ()
85
89
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 ))
87
94
return self .result
88
95
89
96
def mul (self , request , context ):
@@ -92,7 +99,10 @@ def mul(self, request, context):
92
99
93
100
self .result = Result ()
94
101
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 ))
96
106
return self .result
97
107
98
108
def div (self , request , context ):
@@ -101,7 +111,10 @@ def div(self, request, context):
101
111
102
112
self .result = Result ()
103
113
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 ))
105
118
return self .result
106
119
107
120
@@ -154,12 +167,19 @@ def main():
154
167
default = registry [service_name ]['grpc' ],
155
168
type = int ,
156
169
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
158
179
with reserve_port (args .grpc_port ) as port :
159
- _LOGGER .debug ("Binding to port '%s'" , port )
160
180
sys .stdout .flush ()
161
181
workers = []
162
- for _ in range (_PROCESS_COUNT ):
182
+ for _ in range (num_processes ):
163
183
# NOTE: It is imperative that the worker subprocesses be forked before
164
184
# any gRPC servers start up. See
165
185
# https://github.com/grpc/grpc/issues/16001 for more details.
0 commit comments