fixed some bugs with scanning being too fast to get data and killing the tasks

This commit is contained in:
UpstreamData
2022-05-18 12:13:20 -06:00
parent 85b282740a
commit 7f7964526c
3 changed files with 15 additions and 7 deletions

View File

@@ -54,6 +54,7 @@ async def _scan_miners(network: MinerNetwork):
# asynchronously get each miner scanned by the generator
miners = []
data_tasks = []
async for miner in scan_generator:
# if the generator yields a miner, add it to our list
if miner:
@@ -62,17 +63,24 @@ async def _scan_miners(network: MinerNetwork):
# sort the list of miners by IP
miners.sort()
# generate default data for the table manager
_data = {}
for key in DEFAULT_DATA:
_data[key] = ""
_data["IP"] = str(miner.ip)
TableManager().update_item(_data)
asyncio.create_task(_get_miner_data(miner))
# create a task to get data, and save it to ensure it finishes
data_tasks.append(asyncio.create_task(_get_miner_data(miner)))
# update progress bar to indicate scanned miners
progress_bar_len += 1
await update_prog_bar(progress_bar_len)
# make sure all getting data has finished
await asyncio.gather(*data_tasks)
# finish updating progress bar
progress_bar_len += network_size - len(miners)
await update_prog_bar(progress_bar_len)

View File

@@ -69,12 +69,12 @@ class TableManager(metaclass=Singleton):
if not data or data == {} or not data.get("IP"):
return
if not data.get("Light"):
data["Light"] = False
if not data["IP"] in self.data.keys():
self.data[data["IP"]] = {}
if not data.get("Light") and not self.data[data["IP"]].get("Light"):
data["Light"] = False
for key in data.keys():
self.data[data["IP"]][key] = data[key]