lesscode-flask 0.2.10__tar.gz → 0.2.12__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 (68) hide show
  1. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/PKG-INFO +12 -2
  2. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/__init__.py +1 -1
  3. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/setting/__init__.py +3 -1
  4. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/decorator/sql_injection.py +1 -1
  5. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/limit/limit_util.py +2 -1
  6. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/limit/req/redis_rate_limiter.py +3 -2
  7. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask.egg-info/PKG-INFO +12 -2
  8. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/README.md +0 -0
  9. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/app.py +0 -0
  10. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/db/__init__.py +0 -0
  11. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/db/datasource.py +0 -0
  12. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/db/executor.py +0 -0
  13. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/export_data/__init__.py +0 -0
  14. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/export_data/data_download_handler.py +0 -0
  15. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/log/access_log_handler.py +0 -0
  16. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/model/access_log.py +0 -0
  17. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/model/base_model.py +0 -0
  18. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/model/parameterized_query.py +0 -0
  19. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/model/resource_param_template.py +0 -0
  20. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/model/response_result.py +0 -0
  21. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/model/user.py +0 -0
  22. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/service/access_log_service.py +0 -0
  23. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/service/base_service.py +0 -0
  24. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/service/resource_param_template_service.py +0 -0
  25. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/setup/__init__.py +0 -0
  26. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/signals.py +0 -0
  27. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/static/swagger.py +0 -0
  28. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/decorator/__init__.py +0 -0
  29. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/decorator/cache.py +0 -0
  30. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/decorator/swagger.py +0 -0
  31. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/dify_utils.py +0 -0
  32. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/file/file_exporter.py +0 -0
  33. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/file/file_utils.py +0 -0
  34. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/fs_util.py +0 -0
  35. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/helpers.py +0 -0
  36. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
  37. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/limit/__init__.py +0 -0
  38. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/limit/req/rate_limiter_handler.py +0 -0
  39. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/limit/req_count/count_limiter_handler.py +0 -0
  40. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/limit/req_count/redis_count_limiter.py +0 -0
  41. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/oss/__init__.py +0 -0
  42. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/oss/aliyun_oss.py +0 -0
  43. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
  44. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/oss/minio_oss.py +0 -0
  45. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/redis/redis_helper.py +0 -0
  46. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/request/request.py +0 -0
  47. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
  48. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
  49. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/task/__init__.py +0 -0
  50. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/task/task_helper.py +0 -0
  51. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/utils/thread/thread_utils.py +0 -0
  52. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask/wsgi.py +0 -0
  53. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask.egg-info/SOURCES.txt +0 -0
  54. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask.egg-info/dependency_links.txt +0 -0
  55. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask.egg-info/requires.txt +0 -0
  56. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/lesscode_flask.egg-info/top_level.txt +0 -0
  57. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/query_runner/__init__.py +0 -0
  58. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/query_runner/clickhouse.py +0 -0
  59. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/query_runner/elasticsearch.py +0 -0
  60. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/query_runner/kingbase.py +0 -0
  61. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/query_runner/mysql.py +0 -0
  62. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/query_runner/pg.py +0 -0
  63. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/settings/__init__.py +0 -0
  64. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/settings/helpers.py +0 -0
  65. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/utils/__init__.py +0 -0
  66. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/redash/utils/requests_session.py +0 -0
  67. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/setup.cfg +0 -0
  68. {lesscode_flask-0.2.10 → lesscode_flask-0.2.12}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: lesscode-flask
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: lesscode-flask 是基于flask的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://lesscode-flask
6
6
  Author: Chao.yy
@@ -26,6 +26,16 @@ Requires-Dist: gevent==25.5.1
26
26
  Requires-Dist: openpyxl==3.1.5
27
27
  Requires-Dist: iputil==0.3.1
28
28
  Requires-Dist: phone==0.4.5
29
+ Dynamic: author
30
+ Dynamic: author-email
31
+ Dynamic: classifier
32
+ Dynamic: description
33
+ Dynamic: description-content-type
34
+ Dynamic: home-page
35
+ Dynamic: platform
36
+ Dynamic: requires-dist
37
+ Dynamic: requires-python
38
+ Dynamic: summary
29
39
 
30
40
  # lesscode-flask
31
41
 
@@ -1,4 +1,4 @@
1
- __version__ = '0.2.10'
1
+ __version__ = '0.2.12'
2
2
 
3
3
  import functools
4
4
  import logging
@@ -94,7 +94,9 @@ class BaseConfig:
94
94
  RATE_LIMIT_ENABLE: bool = False
95
95
  # 触发限流的处理函数
96
96
  RATE_LIMIT_HANDLER = RateLimitHandler
97
- # 限流频率 单位是每秒
97
+ # 限流频率窗口 单位是每秒
98
+ RATE_LIMIT_TIME_WINDOW = 1
99
+ # 限流频率
98
100
  RATE_LIMIT_RATE = 1
99
101
  # 限流频率允许的突发值 请求速率超过(rate + brust)的请求会被直接拒绝。
100
102
  RATE_LIMIT_BURST = 0
@@ -37,7 +37,7 @@ def is_sql_injection(value):
37
37
  r"(?i)\b(select|union|insert|update|delete|drop|alter|create|truncate|exec|execute|sleep)\b", # 关键 SQL 语句
38
38
  r"(?i)( or | and )\d+=\d+", # 布尔盲注
39
39
  r"(?i)(char|concat|case when)\s*\(", # SQL 函数
40
- r"(--|#|;)", # 注释符号或语句结束符
40
+ r"(--|;)", # 注释符号或语句结束符
41
41
  r"(?i)'[\s\d]*or[\s\d]*'", # 典型 SQL 盲注
42
42
  ]
43
43
 
@@ -33,8 +33,9 @@ def get_rate_limit_info() -> str:
33
33
  """
34
34
  rate = app_config.get("RATE_LIMIT_RATE", 1) # 限流频率 单位是每秒
35
35
  burst = app_config.get("RATE_LIMIT_BURST", 0) # 限流频率允许的突发值 请求速率超过(rate + brust)的请求会被直接拒绝。
36
+ time_window = app_config.get("RATE_LIMIT_TIME_WINDOW", 1) # 限流频率允许的突发值 请求速率超过(rate + brust)的请求会被直接拒绝。
36
37
  limit_key = limit_key_encode()
37
- return limit_key, rate, burst
38
+ return limit_key, rate, burst,time_window
38
39
 
39
40
  def get_count_limit_info() -> str:
40
41
  """
@@ -13,12 +13,13 @@ class RedisRateLimiter:
13
13
  def __init__(self, redis_key):
14
14
  self.redis_key = redis_key
15
15
 
16
- def is_limited(self, key: str, rate: float, burst: float) -> tuple:
16
+ def is_limited(self, key: str, rate: float, burst: float,time_window:int=1) -> tuple:
17
17
  """
18
18
  检查是否触发限流
19
19
  :param key: 限流键
20
20
  :param rate: 每秒请求速率
21
21
  :param burst: 突发请求数
22
+ :param time_window: 窗口期
22
23
  :return: (allowed,delay, excess) 是否触发限流 延迟时间和超出数量
23
24
  """
24
25
  if not key: # 没有key表示不验证
@@ -44,7 +45,7 @@ class RedisRateLimiter:
44
45
  # 计算当前与最近一次访问的时间差
45
46
  elapsed = now - last
46
47
  # 根据时间差计算当前的excess值
47
- excess = max(excess - (rate * abs(elapsed) / 1000) + 1, 0)
48
+ excess = max(excess - (rate * abs(elapsed) / 1000*time_window) + 1, 0)
48
49
  else:
49
50
  excess = 0
50
51
  # 返回延迟时间和超出数量
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: lesscode-flask
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: lesscode-flask 是基于flask的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
5
5
  Home-page: https://lesscode-flask
6
6
  Author: Chao.yy
@@ -26,6 +26,16 @@ Requires-Dist: gevent==25.5.1
26
26
  Requires-Dist: openpyxl==3.1.5
27
27
  Requires-Dist: iputil==0.3.1
28
28
  Requires-Dist: phone==0.4.5
29
+ Dynamic: author
30
+ Dynamic: author-email
31
+ Dynamic: classifier
32
+ Dynamic: description
33
+ Dynamic: description-content-type
34
+ Dynamic: home-page
35
+ Dynamic: platform
36
+ Dynamic: requires-dist
37
+ Dynamic: requires-python
38
+ Dynamic: summary
29
39
 
30
40
  # lesscode-flask
31
41