We spawn a separate thread for the bridge connect() call. It's not pretty, but it works:
class BridgeWrapper(object):
def __init__(self):
self.ready = False
self.bridge = Bridge(api_key=BRIDGE_KEY)
self.bridge_thread = Thread(target=self.connect_thread)
self.bridge_thread.start()
def set_ready(self, ready):
self.ready = ready
def connect_thread(self):
set_ready_cb = partial(self.set_ready, True)
self.bridge.connect(callback=set_ready_cb)
def get_service(self, service):
while (True):
if self.ready: break
time.sleep(1)
return self.bridge.get_service(service)