lesscode-flask 0.2.112__tar.gz → 0.2.114__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/PKG-INFO +1 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/__init__.py +1 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/db/executor.py +4 -4
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/thread/thread_utils.py +12 -6
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask.egg-info/PKG-INFO +1 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/clickhouse.py +0 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/dameng.py +0 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/kingbase.py +0 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/mysql.py +0 -1
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/README.md +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/app.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/db/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/db/datasource.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/export_data/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/export_data/data_download_handler.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/log/access_log_handler.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/access_log.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/base_model.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/parameterized_query.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/resource_param_template.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/response_result.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/user.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/user_limit_policy.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/service/access_log_service.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/service/base_service.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/service/resource_param_template_service.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/setting/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/setup/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/signals.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/static/swagger.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/decorator/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/decorator/cache.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/decorator/sql_injection.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/decorator/swagger.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/dify_utils.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/file/file_exporter.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/file/file_utils.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/fs_util.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/helpers.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/consecutive/consecutive_limiter_handler.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/consecutive/redis_consecutive_limiter.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/limit_util.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/req/rate_limiter_handler.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/req/redis_rate_limiter.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/req_count/count_limiter_handler.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/limit/req_count/redis_count_limiter.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/oss/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/oss/aliyun_oss.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/oss/minio_oss.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/redis/redis_helper.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/request/request.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/sign/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/sign/body_canonical.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/sign/sign_main.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/sign/signature.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/task/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/task/task_helper.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/wsgi.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask.egg-info/SOURCES.txt +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask.egg-info/dependency_links.txt +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask.egg-info/requires.txt +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask.egg-info/top_level.txt +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/elasticsearch.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/query_runner/pg.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/settings/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/settings/helpers.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/utils/__init__.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/redash/utils/requests_session.py +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/setup.cfg +0 -0
- {lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/setup.py +0 -0
|
@@ -40,13 +40,13 @@ class QueryExecutor:
|
|
|
40
40
|
try:
|
|
41
41
|
data, error = self.query_runner.run_query(annotated_query, self.user)
|
|
42
42
|
run_time = time.time() - started_at
|
|
43
|
-
logging.info(f"query finished in {run_time:.3f}s sql
|
|
43
|
+
logging.info(f"query finished in {run_time:.3f}s sql:\n{annotated_query}")
|
|
44
44
|
if error:
|
|
45
45
|
raise QueryExecutionError(error)
|
|
46
46
|
return data
|
|
47
47
|
except Exception as e:
|
|
48
48
|
run_time = time.time() - started_at
|
|
49
|
-
logging.error(f"query failed in {run_time:.3f}s sql
|
|
49
|
+
logging.error(f"query failed in {run_time:.3f}s sql:\n{annotated_query}")
|
|
50
50
|
raise e
|
|
51
51
|
|
|
52
52
|
def exec(self):
|
|
@@ -57,13 +57,13 @@ class QueryExecutor:
|
|
|
57
57
|
try:
|
|
58
58
|
data, error = self.query_runner.exec(annotated_query, self.user)
|
|
59
59
|
run_time = time.time() - started_at
|
|
60
|
-
logging.info(f"query finished in {run_time:.3f}s sql
|
|
60
|
+
logging.info(f"query finished in {run_time:.3f}s sql:\n{annotated_query}")
|
|
61
61
|
if error:
|
|
62
62
|
raise QueryExecutionError(error)
|
|
63
63
|
return data
|
|
64
64
|
except Exception as e:
|
|
65
65
|
run_time = time.time() - started_at
|
|
66
|
-
logging.error(f"query failed in {run_time:.3f}s sql
|
|
66
|
+
logging.error(f"query failed in {run_time:.3f}s sql:\n{annotated_query}")
|
|
67
67
|
raise e
|
|
68
68
|
|
|
69
69
|
#
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/thread/thread_utils.py
RENAMED
|
@@ -12,7 +12,7 @@ class FlaskThread:
|
|
|
12
12
|
self.name = name or target.__name__
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
def wrapper(_func, _args, _kwargs, _result: list = None, _lock=None,
|
|
15
|
+
def wrapper(_func, _args, _kwargs, _result: list = None, _lock=None, _exception: list = None):
|
|
16
16
|
@copy_current_request_context
|
|
17
17
|
def _thread_func():
|
|
18
18
|
try:
|
|
@@ -24,8 +24,8 @@ def wrapper(_func, _args, _kwargs, _result: list = None, _lock=None, _is_throw_e
|
|
|
24
24
|
else:
|
|
25
25
|
_result.append(res)
|
|
26
26
|
except Exception as e:
|
|
27
|
-
if
|
|
28
|
-
|
|
27
|
+
if isinstance(_exception, list):
|
|
28
|
+
_exception.append(e)
|
|
29
29
|
else:
|
|
30
30
|
if _result is not None and isinstance(_result, list):
|
|
31
31
|
if _lock:
|
|
@@ -41,6 +41,7 @@ def run_in_thread(func_list: List[FlaskThread], is_throw_error=False, is_lock=Tr
|
|
|
41
41
|
results = []
|
|
42
42
|
threads = []
|
|
43
43
|
result_locks = []
|
|
44
|
+
exceptions = []
|
|
44
45
|
name_list = []
|
|
45
46
|
for obj in func_list:
|
|
46
47
|
target = obj.target
|
|
@@ -49,6 +50,7 @@ def run_in_thread(func_list: List[FlaskThread], is_throw_error=False, is_lock=Tr
|
|
|
49
50
|
_name = obj.name
|
|
50
51
|
name_list.append(_name)
|
|
51
52
|
result = []
|
|
53
|
+
exception = []
|
|
52
54
|
if is_lock:
|
|
53
55
|
lock = threading.Lock()
|
|
54
56
|
result_locks.append(lock)
|
|
@@ -56,22 +58,26 @@ def run_in_thread(func_list: List[FlaskThread], is_throw_error=False, is_lock=Tr
|
|
|
56
58
|
lock = None
|
|
57
59
|
result_locks.append(lock)
|
|
58
60
|
thread_func = wrapper(_func=target, _args=args, _kwargs=kwargs, _result=result, _lock=lock,
|
|
59
|
-
|
|
61
|
+
_exception=exception)
|
|
60
62
|
t = threading.Thread(target=thread_func)
|
|
61
63
|
threads.append(t)
|
|
62
64
|
results.append(result)
|
|
65
|
+
exceptions.append(exception)
|
|
63
66
|
t.start()
|
|
64
67
|
|
|
65
68
|
for t in threads:
|
|
66
69
|
t.join()
|
|
70
|
+
if is_throw_error:
|
|
71
|
+
if isinstance(exceptions, list) and any(exceptions):
|
|
72
|
+
raise exceptions[0][0]
|
|
67
73
|
|
|
68
74
|
final_results = []
|
|
69
75
|
for result, lock in zip(results, result_locks):
|
|
70
76
|
if is_lock:
|
|
71
77
|
with lock:
|
|
72
|
-
final_results.append(result[0])
|
|
78
|
+
final_results.append(result[0] if result else None)
|
|
73
79
|
else:
|
|
74
|
-
final_results.append(result[0])
|
|
80
|
+
final_results.append(result[0] if result else None)
|
|
75
81
|
if return_type == "list":
|
|
76
82
|
return final_results
|
|
77
83
|
else:
|
|
@@ -257,7 +257,6 @@ class Mysql(BaseSQLQueryRunner):
|
|
|
257
257
|
try:
|
|
258
258
|
connection = self._connection()
|
|
259
259
|
cursor = connection.cursor()
|
|
260
|
-
logger.debug("MySQL running query: %s", query)
|
|
261
260
|
cursor.execute(query)
|
|
262
261
|
except (KeyboardInterrupt, InterruptException):
|
|
263
262
|
self._cancel(thread_id)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/parameterized_query.py
RENAMED
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/model/resource_param_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/service/access_log_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/decorator/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/decorator/sql_injection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/file/file_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/json/NotSortJSONProvider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/redis/redis_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/sign/body_canonical.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/swagger/swagger_template.py
RENAMED
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask/utils/swagger/swagger_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.112 → lesscode_flask-0.2.114}/lesscode_flask.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|