| 275 | |
| 276 | def get_package(package_index=None): |
| 277 | def __get_package(package_index): |
| 278 | print('Connecting to server to get assigned work..') |
| 279 | with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: |
| 280 | sock.connect(__server_address) |
| 281 | if package_index is None: |
| 282 | sock.send(b'get\n') |
| 283 | else: |
| 284 | request = 'getPackageIdx:' + str(package_index) + '\n' |
| 285 | sock.send(request.encode()) |
| 286 | package = sock.recv(256) |
| 287 | # TODO: sock.recv() sometimes hangs and returns b'' afterwards |
| 288 | if not package: |
| 289 | raise Exception('received empty response') |
| 290 | return package.decode('utf-8') |
| 291 | |
| 292 | return try_retry(__get_package, fargs=(package_index,), max_tries=3, sleep_duration=30.0, sleep_factor=1.0) |
| 293 | |