def execute(request): if "task_obj" not in request.keys(): raise CommonException("-1", "缺少task_obj") task_obj_string = request["task_obj"] task_obj = byteify(json.loads(task_obj_string)) execute_list = task_obj["execute_list"] execute_result_method = task_obj["result_method"] result = "" try: for execute_item in execute_list: execute_item_method = execute_item["method"] execute_item_sql = execute_item["sql"] execute_item_param = execute_item["param"] if execute_item_method == "execute": cursor.execute(execute_item_sql, tuple(execute_item_param)) if execute_item_method == "executemany": cursor.executemany(execute_item_sql, execute_item_param) if execute_item_method == "executescript": cursor.executescript(execute_item_sql) connection.commit() if execute_result_method == "fetchall": result = cursor.fetchall() if execute_result_method == "rowcount": result = cursor.rowcount except Exception as e: connection.rollback() result = "error," + str(e.message) if isinstance(result, str) and result.startswith("error"): raise CommonException("-2", "数据库错误," + result) return result
def walk_and_gen_path_info(target_folder): if not target_folder.endswith(os.path.sep): target_folder += os.path.sep data = {"dirs": [], "files": {}} for root, dirs, files in os.walk(target_folder): for dir_name in dirs: full_name = os.path.join(root, dir_name) if os.path.islink(full_name): continue if root == target_folder: relative_name = dir_name else: relative_name = os.path.join(root[len(target_folder):999999], dir_name) relative_name = relative_name.replace(os.path.sep, "/") data["dirs"] += [relative_name] for file_name in files: full_name = os.path.join(root, file_name) if os.path.islink(full_name): continue md5_sum = "" try: md5_sum = md5sum(full_name) except IOError as _: pass if root == target_folder: relative_name = file_name else: relative_name = os.path.join(root[len(target_folder):999999], file_name) relative_name = relative_name.replace(os.path.sep, "/") data["files"][relative_name] = md5_sum return byteify(data)
def execute_batch(execute_list, result_method): task_obj = {"execute_list": execute_list, "result_method": result_method} req = urllib2.Request( _url, urllib.urlencode( {"task_obj": json.dumps(task_obj, ensure_ascii=False)})) response = urllib2.urlopen(req) content = response.read() content_obj = byteify(json.loads(content)) return content_obj["result"]
def execute(request): global max_id global id_path_map if "task_obj" not in request.keys(): raise CommonException("-1", "缺少task_obj") task_obj_string = request["task_obj"] task_obj = byteify(json.loads(task_obj_string)) method = task_obj["method"] param = task_obj["param"] if method == "getStartId": id_num = param["idNum"] old_max_id = max_id max_id += id_num return old_max_id if method == "putIdPathMap": print(param) for id_string in param: id_path_map[id_string] = param[id_string] return "ok" if method == "getPath": id_string = param["id"] return id_path_map[str(id_string)] if method == "reloadDir": id_path_map = {} max_id = 0 return "ok" if method == "getConfig": key = param["key"] default_value = None if "default" in param: default_value = param["default"] if key not in config: return default_value return config[key] if method == "updateConfig": key = param["key"] value = param["value"] config[key] = value return "ok" if method == "saveConfig": with open("./config.json", 'w+') as f: config_content = json.dumps(config, ensure_ascii=False, indent=True) f.write(config_content) return "ok"
def app(environ, start_response): request_method = environ["REQUEST_METHOD"] # GET path_info = environ["PATH_INFO"] # /hi/name/index.action query_string = environ["QUERY_STRING"] # ?后面的东西 remote_address = environ["REMOTE_ADDR"] # 访问者ip print "request_method:" + request_method print "path_info:" + path_info print "remote_address:" + remote_address if request_method == "GET": request = urlparse.parse_qs(query_string) else: try: request_body_size = int(environ.get('CONTENT_LENGTH', 0)) except (ValueError): request_body_size = 0 request_body = environ['wsgi.input'].read(request_body_size) request = urlparse.parse_qs(request_body) for (d, x) in request.items(): if isinstance(x, list) and len(x) == 1: request[d] = x[0] for (d, x) in request.items(): print "key:" + d + ",value:" + str(x) if path_info == "/": response_string = "" response_code = "200 OK" response_header = [ ('Content-type', 'text/html'), ('Access-Control-Allow-Origin', '*'), ('Access-Control-Allow-Credentials', 'true'), ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'), ('Access-Control-Allow-Headers', 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' ) ] try: fetch_result = "ok" response_data = { "code": "0", "message": "success", "result": fetch_result } response_string = json.dumps(response_data, ensure_ascii=False) except CommonException as ce: response_string = '{"code":"' + ce.code + '","message":"' + ce.message + '"}' except ValueError: import traceback traceback.print_exc() response_string = '{"code":"-1","message":"system busy"}' elif path_info == "/execute": response_string = "" response_code = "200 OK" response_header = [ ('Content-type', 'text/html'), ('Access-Control-Allow-Origin', '*'), ('Access-Control-Allow-Credentials', 'true'), ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'), ('Access-Control-Allow-Headers', 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' ) ] try: result = execute(request) response_data = { "code": "0", "message": "success", "result": result } response_string = json.dumps(response_data, ensure_ascii=False) except CommonException as ce: response_string = '{"code":"' + ce.code + '","message":"' + ce.message + '"}' except ValueError: import traceback traceback.print_exc() response_string = '{"code":"-1","message":"system busy"}' else: response_string = "404 NOT FOUND" response_code = "404 NOT FOUND" response_header = [ ('Content-type', 'text/html'), ('Access-Control-Allow-Origin', '*'), ('Access-Control-Allow-Credentials', 'true'), ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'), ('Access-Control-Allow-Headers', 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' ) ] start_response(response_code, response_header) return [byteify(response_string)]