# input and output sockets r_socks = [mqtt_sock, esp_sock] esp_write_queue = Queue() esp_lib.initialize_esp(esp_write_queue, mqtt_client) mqtt_lib.initialize_mqtt(mqtt_client, esp_lib.get_esp_list()) inputs = [] outputs = [] # main select loop while r_socks: w_socks = [] if mqtt_client.want_write(): w_socks += [mqtt_sock] if not esp_write_queue.empty(): w_socks += [esp_sock] inputs, outputs, errors = select.select(r_socks, w_socks, r_socks, 0.01) if len(errors) > 0: logging.error("Socket error while executing select") if mqtt_sock in inputs: rc = mqtt_client.loop_read() mqtt_lib.read() if rc or mqtt_sock is None: logging.error("mqtt read error") if mqtt_sock in outputs: rc = mqtt_client.loop_write()