diff --git a/book_maker/loader/helper.py b/book_maker/loader/helper.py index 85557ed..b628f4f 100644 --- a/book_maker/loader/helper.py +++ b/book_maker/loader/helper.py @@ -1,5 +1,10 @@ import re from copy import copy +import backoff +import logging + +logging.basicConfig(level=logging.WARNING) +logger = logging.getLogger(__name__) class EPUBBookLoaderHelper: @@ -27,13 +32,20 @@ class EPUBBookLoaderHelper: if single_translate: p.extract() + @backoff.on_exception( + backoff.expo, + Exception, + on_backoff=lambda details: logger.warning(f"retry backoff: {details}"), + on_giveup=lambda details: logger.warning(f"retry abort: {details}"), + ) + def translate_with_backoff(self, **kwargs): + return self.translate_model.translate(**kwargs) + def deal_new(self, p, wait_p_list, single_translate=False): self.deal_old(wait_p_list, single_translate, self.context_flag) self.insert_trans( p, - shorter_result_link( - self.translate_model.translate(p.text, self.context_flag) - ), + shorter_result_link(self.translate_with_backoff(p.text, self.context_flag)), self.translation_style, single_translate, ) diff --git a/requirements.txt b/requirements.txt index 7e556cb..39b5bee 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ -e . mkdocs -mkdocs-material \ No newline at end of file +mkdocs-material +backoff diff --git a/setup.py b/setup.py index f7af255..6109563 100644 --- a/setup.py +++ b/setup.py @@ -13,6 +13,7 @@ packages = [ "PyDeepLX", "google-generativeai", "langdetect", + "backoff", ]