Я выполняю терапию как лямбда-функция AWS.Внутри моей функции мне нужен таймер, чтобы увидеть, работает ли он дольше 1 минуты, и если это так, мне нужно запустить некоторую логику.Вот мой код:
def handler():
x = 60
watchdog = Watchdog(x)
try:
runner = CrawlerRunner()
runner.crawl(MySpider1)
runner.crawl(MySpider2)
d = runner.join()
d.addBoth(lambda _: reactor.stop())
reactor.run()
except Watchdog:
print('Timeout error: process takes longer than %s seconds.' % x)
# some other logic here
watchdog.stop()
Класс сторожевого таймера, который я взял из этого ответа .Проблема в том, что код никогда не попадает в этот блок except Watchdog
, а выдает исключение снаружи:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/threading.py", line 1182, in run
self.function(*self.args, **self.kwargs)
File "./functions/python/my_scrapy/index.py", line 174, in defaultHandler
raise self
functions.python.my_scrapy.index.Watchdog: 1
Мне нужно перехватить исключение в функции.Как бы я пошел об этом.PS: я очень плохо знаком с Python.