Below is my dummy script. It works fine, but the log file is empty even post running. What is wrong? I am assuming it to be related to the multiprocessing logger but not able to figure out yet.
import os
import multiprocessing
import traceback
import logging
def get_ids():
return [i for i in range(100)]
def function_name(ids):
if ids[0] % 4 == 0:
raise Exception(f"Error processing chunk starting with id {ids[0]}")
# Do some processing here
print(f"Processing chunk starting with id {ids[0]}")
return
def process_chunk(chunk):
logger = multiprocessing.get_logger()
try:
function_name(chunk)
except Exception as e:
logger.exception(f"Error processing chunk {chunk}")
if __name__ == "__main__":
log_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'example.log'))
logging.basicConfig(filename=log_path, level=logging.DEBUG)
ids = get_ids()
chunks = [ids[i:i + 5] for i in range(0, len(ids), 5)]
pool = multiprocessing.Pool(processes=8)
for chunk in chunks:
pool.apply(process_chunk, args=(chunk,))
pool.close()
pool.join()