Skip to content
Snippets Groups Projects
Commit 3fec93d9 authored by Neda Moeini's avatar Neda Moeini
Browse files

Used Threads to perform concurrent tasks in getting routers from WFO.

parent dd0ee196
No related branches found
No related tags found
1 merge request!37Feature/dboard3 921
import logging import logging
import time
import requests import requests
from flask import current_app from flask import current_app
import concurrent.futures
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -110,14 +112,16 @@ def load_routers_from_orchestrator() -> dict: ...@@ -110,14 +112,16 @@ def load_routers_from_orchestrator() -> dict:
""" """
routers = {} routers = {}
response = make_request(body={'query': query}) response = make_request(body={'query': query})
print(time.time())
try: try:
devices = response['data']['subscriptions']['page'] devices = response['data']['subscriptions']['page']
except (TypeError, KeyError): except (TypeError, KeyError):
devices = [] devices = []
for device in devices: with concurrent.futures.ThreadPoolExecutor() as executor:
router_info = extract_router_info(device) futures = [executor.submit(extract_router_info, device) for device in devices]
if router_info is not None: for future in concurrent.futures.as_completed(futures):
routers[router_info['fqdn']] = router_info['vendor'] router_info = future.result()
if router_info is not None:
routers[router_info['fqdn']] = router_info['vendor']
return routers return routers
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment