Example #1
0
    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
Example #4
0
 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()
Example #5
0
 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)
Example #6
0
    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()
Example #7
0
 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)
Example #8
0
                        '--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()