lesscode-py 0.4.25__tar.gz → 0.4.26__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-py-0.4.25 → lesscode_py-0.4.26}/PKG-INFO +1 -1
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/version.py +1 -1
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/base_handler.py +24 -2
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/base_server_send_event_handler.py +12 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/base_websocket_handler.py +15 -1
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/native_handler.py +11 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/web_server.py +2 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/PKG-INFO +1 -1
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/README.md +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/base_connection_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/base_sql_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/clickhouse/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/clickhouse/clickhouse_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/clickhouse/clickhouse_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/condition_wrapper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/connection_info.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/db_function.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/dm/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/dm/dm_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/dm/dm_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/ds_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/elasticsearch/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/elasticsearch/elasticsearch_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/elasticsearch/elasticsearch_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/es_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/es_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/es_request.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/generic/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/generic/generic_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/generic/generic_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/init_connection_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/base_model.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/mongodb_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/mongodb_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mysql/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mysql/mysql_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mysql/mysql_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/nebula/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/nebula/nebula_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/nebula/nebula_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/neo4j/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/neo4j/neo4j_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/neo4j/neo4j_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/page.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/postgresql/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/postgresql/postgresql_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/postgresql/postgresql_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis/redis_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis/redis_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis_cluster/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis_cluster/redis_cluster_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis_cluster/redis_cluster_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/relational_db_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_model_service.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_pool.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/doc/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/doc/swagger_interface_doc_handler.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/not_found_handler.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/kafka/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/kafka/kafka_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/rabbitmq/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/rabbitmq/rabbitmq_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/sentry/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/sentry/sentry_monitor.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/task/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/task/job_info.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/task/task_helper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/CacheUtil.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/cache_utils.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/custom_type.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/doc/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/doc/interface_doc.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/es_log/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/es_log/record_log.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/json.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/aliyun_oss.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/ks3_oss.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/minio_oss.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/request.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/upms_util.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/wrapper.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/__init__.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/business_exception.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/response_result.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/router_mapping.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/status_code.py +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/SOURCES.txt +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/dependency_links.txt +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/top_level.txt +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/setup.cfg +0 -0
- {lesscode-py-0.4.25 → lesscode_py-0.4.26}/setup.py +0 -0
|
@@ -8,6 +8,7 @@ import time
|
|
|
8
8
|
import traceback
|
|
9
9
|
import types
|
|
10
10
|
import uuid
|
|
11
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
11
12
|
from contextlib import contextmanager
|
|
12
13
|
from datetime import datetime
|
|
13
14
|
from threading import Thread
|
|
@@ -32,6 +33,14 @@ from lesscode.web.router_mapping import RouterMapping
|
|
|
32
33
|
from lesscode.web.status_code import StatusCode
|
|
33
34
|
|
|
34
35
|
|
|
36
|
+
def set_current_request(request):
|
|
37
|
+
"""将当前请求对象绑定到线程局部存储"""
|
|
38
|
+
options.request_ctx.request = request
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
executor = ThreadPoolExecutor()
|
|
42
|
+
|
|
43
|
+
|
|
35
44
|
class BaseHandler(RequestHandler):
|
|
36
45
|
"""
|
|
37
46
|
BaseHandler 类继承自RequestHandler 用于公共基础功能实现,所有均使用此类为基类,只有使用此类的Handler 会被自动加载
|
|
@@ -57,6 +66,13 @@ class BaseHandler(RequestHandler):
|
|
|
57
66
|
if getattr(method, "__http_method__", None):
|
|
58
67
|
self.command_map[method.__name__] = method
|
|
59
68
|
|
|
69
|
+
def prepare(self):
|
|
70
|
+
"""
|
|
71
|
+
钩子方法:所有请求处理前自动执行
|
|
72
|
+
在这里统一绑定请求上下文,无需在每个接口里手动设置
|
|
73
|
+
"""
|
|
74
|
+
set_current_request(self.request)
|
|
75
|
+
|
|
60
76
|
def methods(self):
|
|
61
77
|
return (list(filter(
|
|
62
78
|
lambda m: not m.startswith("__") and not m.startswith("_") and callable(getattr(self, m)) and
|
|
@@ -69,7 +85,7 @@ class BaseHandler(RequestHandler):
|
|
|
69
85
|
:param request:
|
|
70
86
|
:return:
|
|
71
87
|
"""
|
|
72
|
-
|
|
88
|
+
set_current_request(self.request)
|
|
73
89
|
|
|
74
90
|
def process_view(self, request, view_func, view_args, view_kwargs):
|
|
75
91
|
"""
|
|
@@ -183,6 +199,11 @@ class BaseHandler(RequestHandler):
|
|
|
183
199
|
self.process_request(self.request)
|
|
184
200
|
await self.request_handler()
|
|
185
201
|
|
|
202
|
+
def transmit_sync_request_ctx(self, func):
|
|
203
|
+
set_current_request(self.request)
|
|
204
|
+
data = func()
|
|
205
|
+
return data
|
|
206
|
+
|
|
186
207
|
async def request_handler(self):
|
|
187
208
|
# 通过url路径获取对应的处理方法
|
|
188
209
|
res = [item for item in RouterMapping.instance().handlerMapping
|
|
@@ -317,7 +338,8 @@ class BaseHandler(RequestHandler):
|
|
|
317
338
|
func = lambda: common_cache(handler_method, options.global_cache_ex, **params_dict)
|
|
318
339
|
else:
|
|
319
340
|
func = lambda: handler_method(**params_dict)
|
|
320
|
-
|
|
341
|
+
# data = await IOLoop.current().run_in_executor(None, func)
|
|
342
|
+
data = await IOLoop.current().run_in_executor(None, self.transmit_sync_request_ctx, func)
|
|
321
343
|
self.end_time = int(round(time.time() * 1000))
|
|
322
344
|
self.set_header("Api-Time", f"{self.end_time - self.start_time}ms")
|
|
323
345
|
self.process_response(data)
|
|
@@ -12,6 +12,11 @@ from lesscode.web.response_result import ResponseResult
|
|
|
12
12
|
from lesscode.web.status_code import StatusCode
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
def set_current_request(request):
|
|
16
|
+
"""将当前请求对象绑定到线程局部存储"""
|
|
17
|
+
options.request_ctx.request = request
|
|
18
|
+
|
|
19
|
+
|
|
15
20
|
class BaseServerSentEventHandler(RequestHandler):
|
|
16
21
|
def data_received(self, chunk: bytes) -> Optional[Awaitable[None]]:
|
|
17
22
|
pass
|
|
@@ -20,6 +25,13 @@ class BaseServerSentEventHandler(RequestHandler):
|
|
|
20
25
|
super(BaseServerSentEventHandler, self).__init__(*args, **kwargs)
|
|
21
26
|
self.set_header('Content-Type', 'text/event-stream')
|
|
22
27
|
|
|
28
|
+
def prepare(self):
|
|
29
|
+
"""
|
|
30
|
+
钩子方法:所有请求处理前自动执行
|
|
31
|
+
在这里统一绑定请求上下文,无需在每个接口里手动设置
|
|
32
|
+
"""
|
|
33
|
+
set_current_request(self.request)
|
|
34
|
+
|
|
23
35
|
def get_request_arguments(self):
|
|
24
36
|
_arguments = dict()
|
|
25
37
|
query_arguments = self.request.query_arguments or dict()
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
3
|
import time
|
|
4
|
-
from typing import Union
|
|
4
|
+
from typing import Union
|
|
5
5
|
|
|
6
|
+
from tornado.options import options
|
|
6
7
|
from tornado.websocket import WebSocketHandler
|
|
7
8
|
|
|
8
9
|
from lesscode.utils.json import JSONEncoder
|
|
9
10
|
|
|
10
11
|
|
|
12
|
+
def set_current_request(request):
|
|
13
|
+
"""将当前请求对象绑定到线程局部存储"""
|
|
14
|
+
options.request_ctx.request = request
|
|
15
|
+
|
|
16
|
+
|
|
11
17
|
class BaseWebSocketHandler(WebSocketHandler):
|
|
18
|
+
|
|
19
|
+
def prepare(self):
|
|
20
|
+
"""
|
|
21
|
+
钩子方法:所有请求处理前自动执行
|
|
22
|
+
在这里统一绑定请求上下文,无需在每个接口里手动设置
|
|
23
|
+
"""
|
|
24
|
+
set_current_request(self.request)
|
|
25
|
+
|
|
12
26
|
def check_origin(self, origin):
|
|
13
27
|
"""重写同源检查 解决跨域问题"""
|
|
14
28
|
return True
|
|
@@ -3,6 +3,7 @@ import json
|
|
|
3
3
|
import traceback
|
|
4
4
|
from typing import Optional, Awaitable, Union
|
|
5
5
|
|
|
6
|
+
from tornado.options import options
|
|
6
7
|
from tornado.web import RequestHandler
|
|
7
8
|
|
|
8
9
|
from lesscode.utils.es_log.record_log import es_record_log
|
|
@@ -12,8 +13,18 @@ from lesscode.web.response_result import ResponseResult
|
|
|
12
13
|
from lesscode.web.status_code import StatusCode
|
|
13
14
|
|
|
14
15
|
|
|
16
|
+
def set_current_request(request):
|
|
17
|
+
"""将当前请求对象绑定到线程局部存储"""
|
|
18
|
+
options.request_ctx.request = request
|
|
19
|
+
|
|
20
|
+
|
|
15
21
|
class NativeHandler(RequestHandler):
|
|
16
22
|
def prepare(self):
|
|
23
|
+
"""
|
|
24
|
+
钩子方法:所有请求处理前自动执行
|
|
25
|
+
在这里统一绑定请求上下文,无需在每个接口里手动设置
|
|
26
|
+
"""
|
|
27
|
+
set_current_request(self.request)
|
|
17
28
|
self.process_request(self.request)
|
|
18
29
|
|
|
19
30
|
def process_request(self, request):
|
|
@@ -5,6 +5,7 @@ import logging
|
|
|
5
5
|
import os
|
|
6
6
|
import platform
|
|
7
7
|
import sys
|
|
8
|
+
import threading
|
|
8
9
|
import traceback
|
|
9
10
|
from types import FunctionType
|
|
10
11
|
from typing import Optional
|
|
@@ -72,6 +73,7 @@ define("resource_register_enable", default=False, type=bool, help="资源注册
|
|
|
72
73
|
define("outside_screen_port", default=80, type=int, help="资源注册开关")
|
|
73
74
|
define("custom_current_user_switch", default=False, type=bool, help="自定义用户开关")
|
|
74
75
|
define("custom_current_user_func", default=None, type=FunctionType, help="自定义用户方法函数")
|
|
76
|
+
define("request_ctx", default=threading.local(), type=threading.local, help="用于存储请求上下文的线程局部存储容器")
|
|
75
77
|
# 日志初始化配置,配置文件中可修改设置
|
|
76
78
|
options.logging = "DEBUG"
|
|
77
79
|
options.log_rotate_mode = "time"
|
|
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
|
|
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
|
|
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
|
|
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-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_model_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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|