feature: add caching to miner factory.
This commit is contained in:
@@ -358,6 +358,12 @@ async def concurrent_get_first_result(tasks: list, verification_func: Callable):
|
|||||||
|
|
||||||
|
|
||||||
class MinerFactory:
|
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):
|
async def get_multiple_miners(self, ips: List[str], limit: int = 200):
|
||||||
tasks = []
|
tasks = []
|
||||||
results = []
|
results = []
|
||||||
@@ -416,9 +422,12 @@ class MinerFactory:
|
|||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
task.cancel()
|
task.cancel()
|
||||||
|
|
||||||
return self._select_miner_from_classes(
|
miner = self._select_miner_from_classes(
|
||||||
ip, miner_type=miner_type, miner_model=miner_model
|
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):
|
async def _get_miner_type(self, ip: str):
|
||||||
tasks = [
|
tasks = [
|
||||||
|
|||||||
Reference in New Issue
Block a user