Поймать исключение дочернего процесса в родительском процессе - PullRequest
1 голос
/ 10 марта 2020

Я создаю несколько процессов, которые запускают сканеры отдельно. Я хочу убедиться, что если в процессе сканирования есть какое-то исключение, я могу перехватить его в родительском процессе. Вот код создания процесса:

try:
    caching_process = Process(target=run_crawler_process, args=(Config.CRAWLER_NAME, locations,
                                                               city_payloads_map, cycle_count))
    caching_process.start()
except Exception as processException:
    raise processException

1 Ответ

2 голосов
/ 10 марта 2020

Вы не можете сделать это с Process объектами. multiprocessing.Pool или concurrent.futures.ProcessPoolExecutor позволяют это сделать.

pool = multiprocessing.Pool()
task = pool.apply_async(run_crawler_process, (Config.CRAWLER_NAME, locations,c ity_payloads_map, cycle_count))

try:
    task.get()
except Exception as error:  
    print("Error while processing task: %s" % error)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...