def _put(self, cmd_args): """上传本地文件到服务器 1. 确保本地文件存在 2. 拿到文件名+大小+md5加密后的文件名,放到消息头里发给远程 3. 打开文件,发送内容 """ if self.parameter_check(cmd_args, exact_args=1): local_file = cmd_args[0] if os.path.isfile(local_file): total_size = os.path.getsize(local_file) md5_value = utils.md5(local_file) self.send_msg('put', file_size=total_size, filename=local_file, md5_value=md5_value) f = open(local_file, 'rb') uploaded_size = 0 # last_percent = 0 progress_generator = self.progress_bar(total_size) progress_generator.__next__() for line in f: self.sock.send(line) uploaded_size += len(line) # current_percent = int(uploaded_size / total_size * 100) # if current_percent > last_percent: # print("#"* int(current_percent/2) + "{percent}%".format(percent=current_percent),end='\r',flush=True) # last_percent = current_percent #把本次循环的percent赋值给last progress_generator.send(uploaded_size) else: print('\n') print('file upload done'.center(50, '-')) f.close()
def exists_order_id(self, key): ''' 检查是否存在此订单 :param key: :return: ''' sid = int(md5(str(key)), 16) table = self.table_prefix + '_' + str(sid % 16) return self.cursor.execute( 'select order_id from %s where order_id="%s";' % (table, key))
def execute(self, sql, key): ''' 执行sql语句 :param sql: sql语句 :param key: 表的标识 :return: ''' sid = int(md5(str(key)), 16) table = self.table_prefix + '_' + str(sid % 16) sql = sql % table + ';' self.cursor.execute(sql) self.conn.commit()
def get_or_create_session_and_expired(self, force=False): """ 获取或者创建session :return: """ now = int(time.time()) is_save = False if self.sid: if self.expired < now: self.sid = md5('%s%s' % (str(now), self.uid)) self.expired = now + settings.SESSION_EXPIRED is_save = True else: self.sid = md5('%s%s' % (str(now), self.uid)) self.expired = now + settings.SESSION_EXPIRED is_save = True if is_save and not force: self.save() return self.sid, self.expired
def generate_custom_md5(self, data): """生成自定义MD5, 用于自定义数据, data中支持复杂类型 dict, set, list, tuple """ if isinstance(data, (dict, set, list, tuple)): return md5(repr(data)) return md5(data)
def generate_md5(cls, versions): """根据配置版本号生成 md5 值 """ versions_sort = sorted(versions.iteritems(), key=lambda x: x[0]) return md5(versions_sort)