Skip to content

Commit 10f2c61

Browse files
committed
Add poller and move print to log
1 parent 4643c20 commit 10f2c61

2 files changed

Lines changed: 95 additions & 284 deletions

File tree

CP5/active_plugins/cpforeign/zmq_server.ipynb

Lines changed: 60 additions & 265 deletions
Large diffs are not rendered by default.

CP5/active_plugins/runforeignnb.py

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import zmq
22
import numpy as np
3+
import logging
34

45
from cellprofiler_core.module.image_segmentation import ImageSegmentation
56
from cellprofiler_core.setting.do_something import DoSomething
67
from cellprofiler_core.setting.text import Integer
78
from cellprofiler_core.object import Objects
89

10+
LOGGER = logging.getLogger(__name__)
11+
912
HELLO = "Hello"
1013
ACK = "Acknowledge"
1114
DENIED = "Denied"
@@ -114,70 +117,83 @@ def do_server_handshake(self):
114117
socket_addr = f"tcp://{domain}:{port}"
115118

116119
if self.context:
120+
LOGGER.debug("destroying existing context")
117121
self.context.destroy()
118122
self.server_socket = None
119123

120124
self.context = zmq.Context()
121125
self.server_socket = self.context.socket(zmq.PAIR)
122126
self.server_socket.copy_threshold = 0
123127

124-
print("connecting to", socket_addr)
128+
LOGGER.debug(f"connecting to {socket_addr}")
125129

126130
c = self.server_socket.connect(socket_addr)
127131

128-
print("setup socket at", c)
132+
LOGGER.debug(f"setup socket at {c}")
129133

130-
print("sending handshake, waiting for acknowledgement")
134+
LOGGER.debug("sending handshake, waiting for acknowledgement")
131135

132136
self.server_socket.send_string(HELLO)
133-
response = self.server_socket.recv_string()
134137

138+
poller = zmq.Poller()
139+
poller.register(self.server_socket, zmq.POLLIN)
140+
while True:
141+
socks = dict(poller.poll(5000))
142+
if socks.get(self.server_socket) == zmq.POLLIN:
143+
break
144+
else:
145+
LOGGER.debug("handshake timeout")
146+
return
147+
148+
response = self.server_socket.recv_string()
149+
135150
if response == ACK:
136-
print("received correct response", response)
151+
LOGGER.debug(f"received correct response {response}")
137152
else:
138-
print("received unexpected response", response)
153+
LOGGER.debug(f"received unexpected response {response}")
139154

140155
def do_server_execute(self, im_data):
141156
dummy_data = lambda: np.array([[]])
142157

143158
socket = self.server_socket
144159
header = np.lib.format.header_data_from_array_1_0(im_data)
145160

146-
print("sending header", header, "waiting for acknowledgement")
161+
LOGGER.debug(f"sending header {header}; waiting for acknowledgement")
147162
socket.send_json(header)
148163

149164
ack = socket.recv_string()
150165
if ack == ACK:
151-
print("header acknowledged:", ack)
166+
LOGGER.debug(f"header acknowledged: {ack}")
152167
else:
153-
print("unexpected response", ack)
168+
LOGGER.debug(f"unexpected response {ack}")
154169
return dummy_data()
155170

156-
print("sending image data", im_data.shape, "waiting for acknowledgement")
171+
LOGGER.debug(f"sending image data {im_data.shape}; waiting for acknowledgement")
157172
socket.send(im_data, copy=False)
158173

159174
ack = socket.recv_string()
160175
if ack == ACK:
161-
print("image data acknowledged", ack)
176+
LOGGER.debug(f"image data acknowledged {ack}")
162177
elif ack == DENIED:
163-
print("image data denied, aborting", ack)
178+
LOGGER.debug(f"image data denied, aborting {ack}")
164179
return dummy_data()
165180
else:
166-
print("unknown response to image data", ack)
181+
LOGGER.debug(f"unknown response to image data {ack}")
167182
return dummy_data()
168183

169-
print("waiting for return header")
184+
LOGGER.debug("waiting for return header")
170185
return_header = socket.recv_json()
171-
print("received return header", return_header)
186+
LOGGER.debug(f"received return header {return_header}")
172187

173-
print("acknowledging header reciept")
188+
LOGGER.debug("acknowledging header reciept")
174189
socket.send_string(ACK)
175190

176-
print("waiting for image data")
191+
LOGGER.debug("waiting for image data")
177192
label_data_buf = socket.recv(copy=False)
178-
print("image data received")
193+
LOGGER.debug("image data received")
179194

180195
labels = np.frombuffer(label_data_buf, dtype=return_header['descr'])
181196
labels.shape = return_header['shape']
182-
print("returning label data", labels.shape)
197+
LOGGER.debug(f"returning label data {labels.shape}")
198+
183199
return labels

0 commit comments

Comments
 (0)