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.
@@ -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}"
@@ -27,4 +27,3 @@ class MarketDataCacheTTL(Enum):
27
27
  TOP_VOLUME_SCANNER = THREE_DAYS
28
28
  TOP_GAINERS_SCANNER = THREE_DAYS
29
29
  TOP_GAPPERS_SCANNER = THREE_DAYS
30
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kuhl-haus-mdp
3
- Version: 0.1.10
3
+ Version: 0.1.11
4
4
  Summary: Market data processing pipeline for stock market scanner
5
5
  Author-Email: Tom Pounders <git@oldschool.engineer>
6
6
  License: The MIT License (MIT)
@@ -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=ZZy7legxmLYad-p_a7N6hqj2mN7bn-ZdPEt9xgk4mrQ,10111
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=jhBdR8rJEvby7eXTTvXn_PceMSf_gS71oEZV1bK7HdM,7337
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=v7tnc7-qaxSIWvpInlxqDDTByHLY2uilCPhnP7UaNR0,643
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.10.dist-info/METADATA,sha256=Sku0puFIexyTNpzIO8EoUfV8GXQrfw-T6gAREUrqKYs,8888
29
- kuhl_haus_mdp-0.1.10.dist-info/WHEEL,sha256=tsUv_t7BDeJeRHaSrczbGeuK-TtDpGsWi_JfpzD255I,90
30
- kuhl_haus_mdp-0.1.10.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
31
- kuhl_haus_mdp-0.1.10.dist-info/licenses/LICENSE.txt,sha256=DRkJftAJcMqoTkQ_Y6-HtKj3nm4pZah_p8XBZiYnw-c,1079
32
- kuhl_haus_mdp-0.1.10.dist-info/RECORD,,
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,,