fixed some bugs with scanning being too fast to get data and killing the tasks
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user