Контекст: У меня есть сценарий, который работает неопределенно, который контролирует простую очередь URL-адресов, которые необходимо загрузить. Если URL-адрес поступает в очередь, скрипт проверяет, был ли он уже порожден нить для этого URL-адреса, а если нет, он порождает поток, задачей которого является получение данных с этого URL-адреса периодически, пока URL-адрес не вернет ему 404 (который я знать произойдет, потому что URL-адреса доступны только в течение определенного периода времени), в этот момент он назовет sys.exit
, чтобы поднять исключение SystemExit
и по существу отметить себя для завершения, насколько я его понимаю.Pythonic способ узнать, когда/почему мои потоки вышли
Вопрос: Я хотел бы иметь возможность войти в определенное время, когда выходит нить, даже если она выходит за какой-то другой причине, кроме моего звонка в sys.exit
и собрать как можно больше мета-данные о том, почему он вышел, как это возможно. Каков наилучший способ сделать это? Разве потоки передают информацию родителям, которые породили их при выходе?
Код:
Упрощенный пример кода
class MyThread(threading.Thread):
def __init__(self, sF, id):
threading.Thread.__init__(self)
self.sourceFile = [sF]
self.id = id
def run(self):
#do stuff until i encounter a 404, at which point, I'll call sys.exit
if __name__ == '__main__':
while True:
#logic to check the queue, if there is a new url, spawn a new Thread
#for each new thread in the queue:
t = MyThread(file, i)
t.start()
threads.append(t)
Прохладный. это покрывает когда. Будет ли покрываться sys.exc_info() или есть что-то еще, что я должен знать о том, чтобы спустить этот маршрут? – Brad
Ha. вы добавили его :) Отлично. Спасибо – Brad
Ваше правление говорит, что вы бы не рекомендовали часть Исключения. Я не совсем понимаю, почему? Если произойдет что-то неожиданное, я хочу знать, что это было? – Brad