The following script does not end if launched as a procedure in ODI, while ends properly if run out of context ODI. Can someone help me? if you need any more details just ask.
import logging
import random
import threading
import time
NUM_THREADS = 5
def worker(delay, logger):
logge.info("Starting work...")
for i in range(3):
logger.info('Sleeping %0.02f', delay)
time.sleep(delay)
logger.info('Done.')
return
for n in range(1, NUM_THREADS + 1):
logger = logging.getLogger('thread-'+str(n))
logger.setLevel(logging.DEBUG)
# create a file handler writing to a file named after the thread
file_handler = logging.FileHandler('thread-%s.log' % n)
# create a custom formatter and register it for the file handler
formatter = logging.Formatter('(%(threadName)-10s) %(message)s')
file_handler.setFormatter(formatter)
# register the file handler for the thread-specific logger
logger.addHandler(file_handler)
delay = random.random()
t = threading.Thread(target=worker, args=(delay, logger))
t.start()
main_thread = threading.currentThread()
for t in threading.enumerate():
if t is not main_thread:
t.join()