def send_data(self): while True: if self.flag == 2: self.lock.acquire() self.flag = 0 # 读取前5/row_count 行数据 data = mysqlop.query_first_N(self.db_handler, self.db_name, self.tb_name, 2) self.lock.release() temp_data = [] for item in data: temp_data.append({ 'ID': item[0], 'State': item[1], 'Sum': item[3], 'Mean': item[4], 'Max': item[5], 'Min': item[6] }) data = temp_data # 开始发送 for __data in data: __data = simplejson.dumps(__data) self.down_stream_socket.send_string(__data) ack = self.down_stream_socket.recv_string() # Ack msg format: 'ack--' + $ID ack_id = ack.split('--')[1] self.lock.acquire() mysqlop.delete_row(self.db_handler, self.db_connection, self.db_name, self.tb_name, 'ID', ack_id) self.lock.release()
def recv_data(self): data_set = [] id = 0 i = 0 while True: i += 1 # print(i) data = self.up_stream_socket.recv_string() # print('Recv data :' + data) data = simplejson.loads(data) time = data['Time'] self.up_stream_socket.send_string('Ack--' + time) state = data['State'] data = int(data['Data']) data_set.append(data) if len(data_set) == 10: id += 1 result = self.calculating(data_set) # 将数据存入数据库 values = [id, state, 'Recv'] values.extend(result) self.lock.acquire() mysqlop.insert_data_operator(self.db_connection, self.db_handler, self.db_name, self.tb_name, values) data_set = [] self.flag += 1 self.lock.release() tm.sleep(0.01)
def init_db(self): # Connect to Mysql server db_connection, db_handler = mysqlop.connectMysql(self.db_address, self.db_user, self.db_pwd, db=self.db_name) # Create Table mysqlop.createTableAutoInc(db_handler, self.db_name, self.tb_name, self.columns, self.columns_type) # Add primary key for the table # mysqlop.add_primary_key(db_handler, db_connection, self.db_name, self.tb_name, self.columns[0]) return db_connection, db_handler
def send_data(socket, my_data): for __data in my_data: __data = simplejson.dumps(__data) socket.send_string(__data) ack = socket.recv_string() # Ack msg format: 'ack--' + $time ack_time = ack.split('--')[1] print(ack) # Update DB self.lock.acquire() mysqlop.delete_row(self.db_handler, self.db_connection, self.db_name, self.tb_name, 'Time', ack_time) self.lock.release()
def recv_sourcedata(self): while True: msg = self.up_stream_socket.recv_string() # print('Receive msg %s from data source.' % msg) msg = simplejson.loads(msg) temp = [] temp.extend(msg) temp.append('Recv') # Store data into DB self.lock.acquire() mysqlop.insert_data(self.db_connection, self.db_handler, self.db_name, self.tb_name, temp) self.flag += 1 self.lock.release() self.up_stream_socket.send_string('Ack--OK') tm.sleep(0.01)
def distribute_data(self): while True: if self.flag == 15: self.flag = 0 # 读取前100/row_count 行数据 self.lock.acquire() data = mysqlop.query_first_N(self.db_handler, self.db_name, self.tb_name, 15) self.lock.release() print(data) temp_data = [] for item in data: temp_data.append({ 'Time': item[0], 'State': item[1], 'Data': item[2] }) data = temp_data # 开始并行发送 def send_data(socket, my_data): for __data in my_data: __data = simplejson.dumps(__data) socket.send_string(__data) ack = socket.recv_string() # Ack msg format: 'ack--' + $time ack_time = ack.split('--')[1] print(ack) # Update DB self.lock.acquire() mysqlop.delete_row(self.db_handler, self.db_connection, self.db_name, self.tb_name, 'Time', ack_time) self.lock.release() socket_count = len(self.down_stream_sockets) while socket_count == 0: print('no socket') each_count = 15 / socket_count for i in range(socket_count): if i != socket_count - 1: threading.Thread(target=send_data, args=( self.down_stream_sockets[i], data[i * each_count:(i + 1) * each_count], )).start() else: threading.Thread(target=send_data, args=( self.down_stream_sockets[i], data[i * each_count:], )).start()
def recv_data(self): sum_set = [] mean_set = [] max_set = [] min_set = [] myid = 0 while True: data = self.up_stream_socket.recv_string() data = simplejson.loads(data) # print(data) id = data['ID'] self.up_stream_socket.send_string('Ack--' + str(id)) state = data['State'] sum_set.append(data['Sum']) print(sum_set) mean_set.append(data['Mean']) max_set.append(data['Max']) min_set.append(data['Min']) if len(sum_set) == 3: myid += 1 data_sum = np.sum(sum_set) data_max = np.max(max_set) data_min = np.min(min_set) data_mean = np.mean(mean_set) # 将数据存入数据库 values = [id, state, 'Recv'] values.extend([data_sum, data_mean, data_max, data_min]) # print(values) self.lock.acquire() mysqlop.insert_data_operator(self.db_connection, self.db_handler, self.db_name, self.tb_name, values) sum_set = [] mean_set = [] max_set = [] min_set = [] self.flag += 1 self.lock.release() tm.sleep(0.01)
'--db_name', default='result', help='Database name') parser.add_argument('-u', '--user', default='root', help='Mysql user name') parser.add_argument('-p', '--pwd', default='kzw', help='Mysql server password') args = parser.parse_args() db_address = args.db_address db_name = args.db_name db_user = args.user db_pwd = args.pwd # connect to mysql db_connection, db_handler = mysqlop.connectMysql(db_address, db_user, db_pwd) # create database mysqlop.createDB(db_handler, 'result') # table columns columns = [ 'ID', 'State', 'Sum', 'Mean', 'Max', 'Min', 'Total_Sum', 'Total_Mean', 'Total_Max', 'Total_Min' ] columns_type = [ 'INT(11)', 'CHAR(20)', 'DOUBLE(30,4)', 'DOUBLE(30,4)', 'DOUBLE(30,4)', 'DOUBLE(30,4)', 'DOUBLE(30,4)', 'DOUBLE(30,4)', 'DOUBLE(30,4)', 'DOUBLE(30,4)' ] def build_socket(): context = zmq.Context()