fixed some bugs with scanning being too fast to get data and killing the tasks
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
get_version_retries = 3
|
get_version_retries = 2
|
||||||
ping_retries = 3
|
ping_retries = 2
|
||||||
ping_timeout = 5 # Seconds
|
ping_timeout = 3 # Seconds
|
||||||
scan_threads = 300
|
scan_threads = 300
|
||||||
config_threads = 300
|
config_threads = 300
|
||||||
reboot_threads = 300
|
reboot_threads = 300
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ async def _scan_miners(network: MinerNetwork):
|
|||||||
|
|
||||||
# asynchronously get each miner scanned by the generator
|
# asynchronously get each miner scanned by the generator
|
||||||
miners = []
|
miners = []
|
||||||
|
data_tasks = []
|
||||||
async for miner in scan_generator:
|
async for miner in scan_generator:
|
||||||
# if the generator yields a miner, add it to our list
|
# if the generator yields a miner, add it to our list
|
||||||
if miner:
|
if miner:
|
||||||
@@ -62,17 +63,24 @@ async def _scan_miners(network: MinerNetwork):
|
|||||||
# sort the list of miners by IP
|
# sort the list of miners by IP
|
||||||
miners.sort()
|
miners.sort()
|
||||||
|
|
||||||
|
# generate default data for the table manager
|
||||||
_data = {}
|
_data = {}
|
||||||
for key in DEFAULT_DATA:
|
for key in DEFAULT_DATA:
|
||||||
_data[key] = ""
|
_data[key] = ""
|
||||||
_data["IP"] = str(miner.ip)
|
_data["IP"] = str(miner.ip)
|
||||||
TableManager().update_item(_data)
|
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
|
progress_bar_len += 1
|
||||||
await update_prog_bar(progress_bar_len)
|
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)
|
progress_bar_len += network_size - len(miners)
|
||||||
await update_prog_bar(progress_bar_len)
|
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"):
|
if not data or data == {} or not data.get("IP"):
|
||||||
return
|
return
|
||||||
|
|
||||||
if not data.get("Light"):
|
|
||||||
data["Light"] = False
|
|
||||||
|
|
||||||
if not data["IP"] in self.data.keys():
|
if not data["IP"] in self.data.keys():
|
||||||
self.data[data["IP"]] = {}
|
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():
|
for key in data.keys():
|
||||||
self.data[data["IP"]][key] = data[key]
|
self.data[data["IP"]][key] = data[key]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user