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.
Files changed (102) hide show
  1. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/PKG-INFO +1 -1
  2. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/version.py +1 -1
  3. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/base_handler.py +24 -2
  4. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/base_server_send_event_handler.py +12 -0
  5. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/base_websocket_handler.py +15 -1
  6. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/native_handler.py +11 -0
  7. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/web_server.py +2 -0
  8. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/PKG-INFO +1 -1
  9. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/README.md +0 -0
  10. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/__init__.py +0 -0
  11. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/__init__.py +0 -0
  12. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/base_connection_pool.py +0 -0
  13. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/base_sql_helper.py +0 -0
  14. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/clickhouse/__init__.py +0 -0
  15. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/clickhouse/clickhouse_helper.py +0 -0
  16. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/clickhouse/clickhouse_pool.py +0 -0
  17. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/condition_wrapper.py +0 -0
  18. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/connection_info.py +0 -0
  19. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/db_function.py +0 -0
  20. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/dm/__init__.py +0 -0
  21. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/dm/dm_helper.py +0 -0
  22. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/dm/dm_pool.py +0 -0
  23. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/ds_helper.py +0 -0
  24. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/elasticsearch/__init__.py +0 -0
  25. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/elasticsearch/elasticsearch_helper.py +0 -0
  26. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/elasticsearch/elasticsearch_pool.py +0 -0
  27. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/__init__.py +0 -0
  28. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/es_helper.py +0 -0
  29. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/es_pool.py +0 -0
  30. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/es/es_request.py +0 -0
  31. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/generic/__init__.py +0 -0
  32. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/generic/generic_helper.py +0 -0
  33. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/generic/generic_pool.py +0 -0
  34. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/init_connection_pool.py +0 -0
  35. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/__init__.py +0 -0
  36. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/base_model.py +0 -0
  37. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/mongodb_helper.py +0 -0
  38. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mongodb/mongodb_pool.py +0 -0
  39. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mysql/__init__.py +0 -0
  40. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mysql/mysql_helper.py +0 -0
  41. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/mysql/mysql_pool.py +0 -0
  42. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/nebula/__init__.py +0 -0
  43. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/nebula/nebula_helper.py +0 -0
  44. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/nebula/nebula_pool.py +0 -0
  45. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/neo4j/__init__.py +0 -0
  46. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/neo4j/neo4j_helper.py +0 -0
  47. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/neo4j/neo4j_pool.py +0 -0
  48. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/page.py +0 -0
  49. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/postgresql/__init__.py +0 -0
  50. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/postgresql/postgresql_helper.py +0 -0
  51. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/postgresql/postgresql_pool.py +0 -0
  52. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis/__init__.py +0 -0
  53. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis/redis_helper.py +0 -0
  54. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis/redis_pool.py +0 -0
  55. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis_cluster/__init__.py +0 -0
  56. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis_cluster/redis_cluster_helper.py +0 -0
  57. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/redis_cluster/redis_cluster_pool.py +0 -0
  58. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/relational_db_helper.py +0 -0
  59. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/__init__.py +0 -0
  60. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_helper.py +0 -0
  61. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_model_service.py +0 -0
  62. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/db/sqlalchemy/sqlalchemy_pool.py +0 -0
  63. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/__init__.py +0 -0
  64. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/doc/__init__.py +0 -0
  65. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/doc/swagger_interface_doc_handler.py +0 -0
  66. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/extend_handlers/not_found_handler.py +0 -0
  67. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/__init__.py +0 -0
  68. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/kafka/__init__.py +0 -0
  69. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/kafka/kafka_helper.py +0 -0
  70. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/rabbitmq/__init__.py +0 -0
  71. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/mq/rabbitmq/rabbitmq_helper.py +0 -0
  72. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/sentry/__init__.py +0 -0
  73. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/sentry/sentry_monitor.py +0 -0
  74. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/task/__init__.py +0 -0
  75. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/task/job_info.py +0 -0
  76. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/task/task_helper.py +0 -0
  77. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/CacheUtil.py +0 -0
  78. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/__init__.py +0 -0
  79. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/cache_utils.py +0 -0
  80. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/custom_type.py +0 -0
  81. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/doc/__init__.py +0 -0
  82. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/doc/interface_doc.py +0 -0
  83. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/es_log/__init__.py +0 -0
  84. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/es_log/record_log.py +0 -0
  85. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/json.py +0 -0
  86. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/__init__.py +0 -0
  87. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/aliyun_oss.py +0 -0
  88. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/ks3_oss.py +0 -0
  89. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/oss/minio_oss.py +0 -0
  90. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/request.py +0 -0
  91. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/upms_util.py +0 -0
  92. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/utils/wrapper.py +0 -0
  93. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/__init__.py +0 -0
  94. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/business_exception.py +0 -0
  95. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/response_result.py +0 -0
  96. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/router_mapping.py +0 -0
  97. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode/web/status_code.py +0 -0
  98. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/SOURCES.txt +0 -0
  99. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/dependency_links.txt +0 -0
  100. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/lesscode_py.egg-info/top_level.txt +0 -0
  101. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/setup.cfg +0 -0
  102. {lesscode-py-0.4.25 → lesscode_py-0.4.26}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-py
3
- Version: 0.4.25
3
+ Version: 0.4.26
4
4
  Summary: lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://gitee.com/yongchao9/lesscode-python
6
6
  Author: Chao.yy
@@ -5,4 +5,4 @@
5
5
  lesscode python version file.
6
6
  """
7
7
 
8
- __version__ = "0.4.25"
8
+ __version__ = "0.4.26"
@@ -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
- pass
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
- data = await IOLoop.current().run_in_executor(None, func)
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, Optional, Awaitable
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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-py
3
- Version: 0.4.25
3
+ Version: 0.4.26
4
4
  Summary: lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://gitee.com/yongchao9/lesscode-python
6
6
  Author: Chao.yy
File without changes
File without changes
File without changes