in ees_microsoft_outlook/base_command.py [0:0]
def create_jobs(self, thread_count, func, args, iterable_list):
"""Creates a thread pool of given number of thread count
:param thread_count: Total number of threads to be spawned
:param func: The target function on which the async calls would be made
:param args: Arguments for the targeted function
:param iterable_list: list to iterate over and create thread
"""
# If iterable_list is present, then iterate over the list and pass each list element
# as an argument to the async function, else iterate over number of threads configured
if iterable_list:
documents = []
with ThreadPoolExecutor(max_workers=thread_count) as executor:
future_to_path = {
executor.submit(func, *args, *list_element): list_element
for list_element in iterable_list
}
for future in as_completed(future_to_path):
try:
if future.result():
documents.extend(future.result())
except Exception as exception:
self.logger.exception(
f"Error while fetching the data from Microsoft Outlook. Error {exception}"
)
return documents
else:
with ThreadPoolExecutor(max_workers=thread_count) as executor:
for _ in range(thread_count):
executor.submit(func)