mdbq 4.0.99__py3-none-any.whl → 4.0.101__py3-none-any.whl

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.

Potentially problematic release.


This version of mdbq might be problematic. Click here for more details.

mdbq/__version__.py CHANGED
@@ -1 +1 @@
1
- VERSION = '4.0.99'
1
+ VERSION = '4.0.101'
mdbq/auth/rate_limiter.py CHANGED
@@ -260,8 +260,10 @@ class AdvancedRateLimiter:
260
260
  window_start = current_time - rule.window
261
261
 
262
262
  if key not in self.storage:
263
- self.storage[key]['requests'] = deque()
263
+ self.storage[key] = {'requests': deque(), 'last_access': current_time}
264
264
 
265
+ # 更新最后访问时间
266
+ self.storage[key]['last_access'] = current_time
265
267
  requests = self.storage[key]['requests']
266
268
 
267
269
  # 清理过期请求
@@ -286,9 +288,12 @@ class AdvancedRateLimiter:
286
288
  if key not in self.storage:
287
289
  self.storage[key] = {
288
290
  'tokens': rule.requests,
289
- 'last_refill': current_time
291
+ 'last_refill': current_time,
292
+ 'last_access': current_time
290
293
  }
291
294
 
295
+ # 更新最后访问时间
296
+ self.storage[key]['last_access'] = current_time
292
297
  bucket = self.storage[key]
293
298
 
294
299
  # 计算需要添加的令牌数
@@ -313,8 +318,10 @@ class AdvancedRateLimiter:
313
318
 
314
319
  with self.locks[key]:
315
320
  if key not in self.storage:
316
- self.storage[key] = {'count': 0, 'window_start': window_start}
321
+ self.storage[key] = {'count': 0, 'window_start': window_start, 'last_access': current_time}
317
322
 
323
+ # 更新最后访问时间
324
+ self.storage[key]['last_access'] = current_time
318
325
  data = self.storage[key]
319
326
 
320
327
  # 检查是否是新窗口
@@ -373,6 +380,7 @@ class AdvancedRateLimiter:
373
380
  violations['count'] = 1
374
381
 
375
382
  violations['last_time'] = current_time
383
+ violations['last_access'] = current_time
376
384
  self.storage[violation_key] = violations
377
385
 
378
386
  # 连续违规超过阈值,进行阻断
@@ -487,12 +495,16 @@ class RateLimitDecorators:
487
495
  if isinstance(response, tuple) and len(response) >= 2:
488
496
  response_data, status_code = response[0], response[1]
489
497
  if hasattr(response_data, 'headers'):
490
- rule = self.limiter.rules.get(api_type, {}).get(user_level)
491
- if rule:
492
- response_data.headers['X-RateLimit-Limit'] = str(rule.requests)
493
- response_data.headers['X-RateLimit-Remaining'] = str(remaining)
494
- response_data.headers['X-RateLimit-Reset'] = str(int(time.time() + rule.window))
495
- response_data.headers['X-RateLimit-Policy'] = f"{api_type}:{user_level.value}"
498
+ try:
499
+ rule = self.limiter.rules.get(api_type, {}).get(user_level)
500
+ if rule and hasattr(rule, 'requests') and hasattr(rule, 'window'):
501
+ response_data.headers['X-RateLimit-Limit'] = str(rule.requests)
502
+ response_data.headers['X-RateLimit-Remaining'] = str(remaining)
503
+ response_data.headers['X-RateLimit-Reset'] = str(int(time.time() + rule.window))
504
+ response_data.headers['X-RateLimit-Policy'] = f"{api_type}:{user_level.value}"
505
+ except (AttributeError, KeyError, TypeError):
506
+ # 忽略头部设置错误,不影响主要功能
507
+ pass
496
508
 
497
509
  return response
498
510
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mdbq
3
- Version: 4.0.99
3
+ Version: 4.0.101
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,8 +1,8 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=3pgeM4FRzKH3kfbXDpPMNe-aq2Qy0ytSAFcNGAwqiMk,18
2
+ mdbq/__version__.py,sha256=rfICcxlmzUQJ5Hzr7UgjXor-iFyT_ckRGGFJPHSOmSM,19
3
3
  mdbq/auth/__init__.py,sha256=pnPMAt63sh1B6kEvmutUuro46zVf2v2YDAG7q-jV_To,24
4
4
  mdbq/auth/auth_backend.py,sha256=cUL9oWzzFSuJgvqeo4ognl8NiMvaIWNgJMaG7ZCLvnA,79391
5
- mdbq/auth/rate_limiter.py,sha256=e7K8pMQlZ1vm1N-c0HBH8tbAwzcmXSRiAl81JNZ369g,26192
5
+ mdbq/auth/rate_limiter.py,sha256=TAMayHQxDPCEc4eGcsMnCCCYQ6LWxkoCcUd7XsTGu9I,26960
6
6
  mdbq/js/__init__.py,sha256=hpMi3_ZKwIWkzc0LnKL-SY9AS-7PYFHq0izYTgEvxjc,30
7
7
  mdbq/js/jc.py,sha256=FOc6HOOTJwnoZLZmgmaE1SQo9rUnVhXmefhKMD2MlDA,13229
8
8
  mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
@@ -33,7 +33,7 @@ mdbq/route/routes.py,sha256=QVGfTvDgu0CpcKCvk1ra74H8uojgqTLUav1fnVAqLEA,29433
33
33
  mdbq/selenium/__init__.py,sha256=AKzeEceqZyvqn2dEDoJSzDQnbuENkJSHAlbHAD0u0ZI,10
34
34
  mdbq/selenium/get_driver.py,sha256=1NTlVUE6QsyjTrVVVqTO2LOnYf578ccFWlWnvIXGtic,20903
35
35
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
36
- mdbq-4.0.99.dist-info/METADATA,sha256=H_Sa_C5vsfH6M3ynHCuTXb5XpJ-yXXssIweqINggiqU,364
37
- mdbq-4.0.99.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
38
- mdbq-4.0.99.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
- mdbq-4.0.99.dist-info/RECORD,,
36
+ mdbq-4.0.101.dist-info/METADATA,sha256=TOyDrSssNPs9yZd59NXESLL6pXYOVHQGmFzJ1HtT8hw,365
37
+ mdbq-4.0.101.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
38
+ mdbq-4.0.101.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
+ mdbq-4.0.101.dist-info/RECORD,,
File without changes