kuhl-haus-mdp 0.1.10__py3-none-any.whl → 0.1.11__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.
- kuhl_haus/mdp/analyzers/top_stocks.py +3 -0
- kuhl_haus/mdp/components/market_data_cache.py +22 -0
- kuhl_haus/mdp/models/market_data_cache_ttl.py +0 -1
- {kuhl_haus_mdp-0.1.10.dist-info → kuhl_haus_mdp-0.1.11.dist-info}/METADATA +1 -1
- {kuhl_haus_mdp-0.1.10.dist-info → kuhl_haus_mdp-0.1.11.dist-info}/RECORD +8 -8
- {kuhl_haus_mdp-0.1.10.dist-info → kuhl_haus_mdp-0.1.11.dist-info}/WHEEL +0 -0
- {kuhl_haus_mdp-0.1.10.dist-info → kuhl_haus_mdp-0.1.11.dist-info}/entry_points.txt +0 -0
- {kuhl_haus_mdp-0.1.10.dist-info → kuhl_haus_mdp-0.1.11.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -136,6 +136,9 @@ class TopStocksAnalyzer(Analyzer):
|
|
|
136
136
|
prev_day_volume = snapshot.prev_day.volume
|
|
137
137
|
prev_day_vwap = snapshot.prev_day.vwap
|
|
138
138
|
break
|
|
139
|
+
except KeyError:
|
|
140
|
+
retry_count += 1
|
|
141
|
+
await self.cache.delete_ticker_snapshot(event.symbol)
|
|
139
142
|
except Exception as e:
|
|
140
143
|
self.logger.error(f"Failed to get snapshot for {event.symbol}: {e}")
|
|
141
144
|
retry_count += 1
|
|
@@ -26,6 +26,18 @@ class MarketDataCache:
|
|
|
26
26
|
self.redis_client = redis_client
|
|
27
27
|
self.http_session = None
|
|
28
28
|
|
|
29
|
+
async def delete_cache(self, cache_key: str):
|
|
30
|
+
"""
|
|
31
|
+
Delete cache entry.
|
|
32
|
+
|
|
33
|
+
:arg cache_key: Cache key to delete
|
|
34
|
+
"""
|
|
35
|
+
try:
|
|
36
|
+
await self.redis_client.delete(cache_key)
|
|
37
|
+
self.logger.info(f"Deleted cache entry: {cache_key}")
|
|
38
|
+
except Exception as e:
|
|
39
|
+
self.logger.error(f"Error deleting cache entry: {e}")
|
|
40
|
+
|
|
29
41
|
async def get_cache(self, cache_key: str) -> Optional[dict]:
|
|
30
42
|
"""Fetch current value from Redis cache (for snapshot requests)."""
|
|
31
43
|
value = await self.redis_client.get(cache_key)
|
|
@@ -44,6 +56,16 @@ class MarketDataCache:
|
|
|
44
56
|
await self.redis_client.publish(publish_key, json.dumps(data))
|
|
45
57
|
self.logger.info(f"Published data for {publish_key}")
|
|
46
58
|
|
|
59
|
+
async def delete_ticker_snapshot(self, ticker: str):
|
|
60
|
+
"""
|
|
61
|
+
Delete ticker snapshot from cache.
|
|
62
|
+
|
|
63
|
+
:param ticker: symbol of ticker to delete snapshot for
|
|
64
|
+
:return: None
|
|
65
|
+
"""
|
|
66
|
+
cache_key = f"{MarketDataCacheKeys.TICKER_SNAPSHOTS.value}:{ticker}"
|
|
67
|
+
await self.delete_cache(cache_key=cache_key)
|
|
68
|
+
|
|
47
69
|
async def get_ticker_snapshot(self, ticker: str) -> TickerSnapshot:
|
|
48
70
|
self.logger.info(f"Getting snapshot for {ticker}")
|
|
49
71
|
cache_key = f"{MarketDataCacheKeys.TICKER_SNAPSHOTS.value}:{ticker}"
|
|
@@ -2,9 +2,9 @@ kuhl_haus/mdp/__init__.py,sha256=5dEpAdB3kypH8tCRECoXwbly1WV9kFU5kh8ldGSa0VI,349
|
|
|
2
2
|
kuhl_haus/mdp/analyzers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
kuhl_haus/mdp/analyzers/analyzer.py,sha256=rIU1lcHwP2IBai0QLt0y-4ySg_ibWsutNU8JUgSxa1U,471
|
|
4
4
|
kuhl_haus/mdp/analyzers/massive_data_analyzer.py,sha256=i3XFnornuGGhe6nbk6QqIupND0MYTxwKPjvyFw_UBDU,3863
|
|
5
|
-
kuhl_haus/mdp/analyzers/top_stocks.py,sha256=
|
|
5
|
+
kuhl_haus/mdp/analyzers/top_stocks.py,sha256=uKH7uRJNaPRcpBvFLFM_wJVqo8QyHZ8Obj8zjU3dx9E,10255
|
|
6
6
|
kuhl_haus/mdp/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
kuhl_haus/mdp/components/market_data_cache.py,sha256=
|
|
7
|
+
kuhl_haus/mdp/components/market_data_cache.py,sha256=Jp5bTycVlY1y5cY9wolqlhwFFqUgBIHnTJh8zPyqxCY,8064
|
|
8
8
|
kuhl_haus/mdp/components/market_data_scanner.py,sha256=45MgprFlq03MvmIRYXENsrc7UlTcBE_hIsPyOvNs1zc,9745
|
|
9
9
|
kuhl_haus/mdp/components/widget_data_service.py,sha256=ikygD9NRpidcXBEqft5Q11rHy_eUOwKGyOLEezo-Dd4,7439
|
|
10
10
|
kuhl_haus/mdp/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -20,13 +20,13 @@ kuhl_haus/mdp/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
20
20
|
kuhl_haus/mdp/models/constants.py,sha256=t55gVHl3IVDSA5Y-mu7zdA8FXAuw4TbOEkI2r2U__1Y,420
|
|
21
21
|
kuhl_haus/mdp/models/market_data_analyzer_result.py,sha256=iICb5GVCtuqARNbR1JNCAfbxMijM3uppDNdL8_FB3eI,422
|
|
22
22
|
kuhl_haus/mdp/models/market_data_cache_keys.py,sha256=_CSPtwvZo5W6cuj9vb7lRTu6MMuRGASe_VigAaOQXwE,1067
|
|
23
|
-
kuhl_haus/mdp/models/market_data_cache_ttl.py,sha256=
|
|
23
|
+
kuhl_haus/mdp/models/market_data_cache_ttl.py,sha256=mfNNrt0mkdppQtjb6gvyd2toSPCcmK_s-EcY5nQ0xLE,642
|
|
24
24
|
kuhl_haus/mdp/models/market_data_pubsub_keys.py,sha256=PEIPXK9jBehJB7G4pqoSuQZcfMZgOQq8Yho1itqv-1A,1306
|
|
25
25
|
kuhl_haus/mdp/models/market_data_scanner_names.py,sha256=BYn1C0rYgGF1Sq583BkHADKUu-28ytNZQ-XgptuCH-Y,260
|
|
26
26
|
kuhl_haus/mdp/models/massive_data_queue.py,sha256=MfYBcjVc4Fi61DWIvvhhWLUOiLmRpE9egtW-2KH6FTE,188
|
|
27
27
|
kuhl_haus/mdp/models/top_stocks_cache_item.py,sha256=Zn9LociBatP2a1OUfjXDFlWM7tCudO-CR4oj6jYfEEM,7916
|
|
28
|
-
kuhl_haus_mdp-0.1.
|
|
29
|
-
kuhl_haus_mdp-0.1.
|
|
30
|
-
kuhl_haus_mdp-0.1.
|
|
31
|
-
kuhl_haus_mdp-0.1.
|
|
32
|
-
kuhl_haus_mdp-0.1.
|
|
28
|
+
kuhl_haus_mdp-0.1.11.dist-info/METADATA,sha256=U5ev3SWbfM1L1bIChjE8LYmjz_xqyHMg-9lpRQcponQ,8888
|
|
29
|
+
kuhl_haus_mdp-0.1.11.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
|
|
30
|
+
kuhl_haus_mdp-0.1.11.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
|
31
|
+
kuhl_haus_mdp-0.1.11.dist-info/licenses/LICENSE.txt,sha256=DRkJftAJcMqoTkQ_Y6-HtKj3nm4pZah_p8XBZiYnw-c,1079
|
|
32
|
+
kuhl_haus_mdp-0.1.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|