From 44d6e4cdd499c83a629490f5f49f6102683c7c90 Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Mon, 12 Jun 2023 09:44:47 -0600 Subject: [PATCH] feature: add caching to miner factory. --- pyasic/miners/miner_factory.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pyasic/miners/miner_factory.py b/pyasic/miners/miner_factory.py index 1d9d3c08..4b20e639 100644 --- a/pyasic/miners/miner_factory.py +++ b/pyasic/miners/miner_factory.py @@ -358,6 +358,12 @@ async def concurrent_get_first_result(tasks: list, verification_func: Callable): class MinerFactory: + def __init__(self): + self.cache = {} + + def clear_cached_miners(self): + self.cache = {} + async def get_multiple_miners(self, ips: List[str], limit: int = 200): tasks = [] results = [] @@ -416,9 +422,12 @@ class MinerFactory: except asyncio.TimeoutError: task.cancel() - return self._select_miner_from_classes( + miner = self._select_miner_from_classes( ip, miner_type=miner_type, miner_model=miner_model ) + if miner is not None and not isinstance(miner, UnknownMiner): + self.cache[ip] = miner + return miner async def _get_miner_type(self, ip: str): tasks = [