Skip to content

Commit

Permalink
add auto bind for windows compatiable
Browse files Browse the repository at this point in the history
  • Loading branch information
hanhxiao committed Dec 6, 2018
1 parent 2478263 commit 116acc6
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions server/bert_serving/server/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@
__version__ = '1.4.4'


def _auto_bind(socket):
if os.name == 'nt': # for Windows
socket.bind_to_random_port('tcp://*')
else:
socket.bind('ipc://*')
return socket.getsockopt(zmq.LAST_ENDPOINT).decode('ascii')


class ServerCommand:
terminate = b'TERMINATION'
show_config = b'SHOW_CONFIG'
Expand Down Expand Up @@ -66,13 +74,11 @@ def __init__(self, args):

# pair connection between frontend and sink
self.sink = self.context.socket(zmq.PAIR)
self.sink.bind('ipc://*')
self.addr_front2sink = self.sink.getsockopt(zmq.LAST_ENDPOINT).decode('ascii')
self.addr_front2sink = _auto_bind(self.sink)

# backend facing workers
self.backend = self.context.socket(zmq.PUSH)
self.backend.bind('ipc://*')
self.addr_backend = self.backend.getsockopt(zmq.LAST_ENDPOINT).decode('ascii')
self.addr_backend = _auto_bind(self.backend)

# start the sink thread
proc_sink = BertSink(self.args, self.addr_front2sink)
Expand Down Expand Up @@ -170,7 +176,7 @@ def run(self):
context = zmq.Context()
# receive from workers
receiver = context.socket(zmq.PULL)
receiver.bind('ipc://*')
receiver_addr = _auto_bind(receiver)

frontend = context.socket(zmq.PAIR)
frontend.connect(self.front_sink_addr)
Expand All @@ -188,7 +194,7 @@ def run(self):
poller.register(receiver, zmq.POLLIN)

# send worker receiver address back to frontend
frontend.send(receiver.getsockopt(zmq.LAST_ENDPOINT))
frontend.send(receiver_addr.encode('ascii'))

try:
while not self.exit_flag.is_set():
Expand Down

0 comments on commit 116acc6

Please sign in to comment.