feliksius commited on
Commit
526c532
·
verified ·
1 Parent(s): 81f73b5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -8
app.py CHANGED
@@ -15,10 +15,13 @@ os.environ["TRANSFORMERS_CACHE"] = "/app/cache"
15
 
16
  app = FastAPI()
17
 
18
- # Configure asynchronous logging with RotatingFileHandler to reduce I/O blocking
19
  logging.basicConfig(
20
  level=logging.INFO,
21
- handlers=[logging.handlers.RotatingFileHandler("app.log", maxBytes=1000000, backupCount=1)]
 
 
 
22
  )
23
  logger = logging.getLogger(__name__)
24
 
@@ -31,7 +34,7 @@ MODEL_MAP = {
31
  }
32
 
33
  # List of terms to protect from translation
34
- PROTECTED_TERMS = ["2030 Aspirations"]
35
 
36
  # Cache for translators to avoid reloading models unnecessarily
37
  translators = {}
@@ -40,7 +43,6 @@ def get_translator(lang: str):
40
  """Load or retrieve cached translator for the given language."""
41
  if lang not in translators:
42
  logger.info(f"Loading model for {lang} from {MODEL_MAP[lang]}...")
43
- # Optimize pipeline with max_length and num_beams for faster inference
44
  translators[lang] = pipeline(
45
  "translation",
46
  model=MODEL_MAP[lang],
@@ -73,7 +75,6 @@ def protect_terms(text: str, protected_terms: list) -> tuple[str, dict]:
73
  for i, term in enumerate(protected_terms):
74
  placeholder = f"__PROTECTED_{i}__"
75
  replacements[placeholder] = term
76
- # Use regex for case-sensitive replacement in a single pass
77
  modified_text = re.sub(r'\b' + re.escape(term) + r'\b', placeholder, modified_text)
78
  if replacements:
79
  logger.debug(f"Protected terms replaced: {replacements}")
@@ -95,14 +96,13 @@ async def translate(text: str, source_lang_override: Optional[str] = None):
95
  if not text:
96
  raise HTTPException(status_code=400, detail="Text input is required.")
97
 
98
- try.lytic
99
  try:
100
  # Determine source language
101
  if source_lang_override and source_lang_override in MODEL_MAP:
102
  source_lang = source_lang_override
103
  logger.debug(f"Source language overridden by user to: '{source_lang_override}'.")
104
  else:
105
- source_lang = await asyncio.to_thread(detect_language, text) # Run detection in a thread to avoid blocking
106
  logger.debug(f"Determined source language for translation: '{source_lang}'.")
107
 
108
  # If source language is English, return original text
@@ -138,4 +138,4 @@ async def translate(text: str, source_lang_override: Optional[str] = None):
138
  raise e
139
  except Exception as e:
140
  logger.error(f"An unexpected error occurred during processing: {str(e)}", exc_info=True)
141
- raise HTTPException(statusinvestigate further
 
15
 
16
  app = FastAPI()
17
 
18
+ # Configure asynchronous logging with RotatingFileHandler and StreamHandler
19
  logging.basicConfig(
20
  level=logging.INFO,
21
+ handlers=[
22
+ logging.handlers.RotatingFileHandler("app.log", maxBytes=1000000, backupCount=1),
23
+ logging.StreamHandler() # Added for console output
24
+ ]
25
  )
26
  logger = logging.getLogger(__name__)
27
 
 
34
  }
35
 
36
  # List of terms to protect from translation
37
+ PROTECTED_TERMS = ["2030 Aspirations", "Griffith", "SDG 2030"]
38
 
39
  # Cache for translators to avoid reloading models unnecessarily
40
  translators = {}
 
43
  """Load or retrieve cached translator for the given language."""
44
  if lang not in translators:
45
  logger.info(f"Loading model for {lang} from {MODEL_MAP[lang]}...")
 
46
  translators[lang] = pipeline(
47
  "translation",
48
  model=MODEL_MAP[lang],
 
75
  for i, term in enumerate(protected_terms):
76
  placeholder = f"__PROTECTED_{i}__"
77
  replacements[placeholder] = term
 
78
  modified_text = re.sub(r'\b' + re.escape(term) + r'\b', placeholder, modified_text)
79
  if replacements:
80
  logger.debug(f"Protected terms replaced: {replacements}")
 
96
  if not text:
97
  raise HTTPException(status_code=400, detail="Text input is required.")
98
 
 
99
  try:
100
  # Determine source language
101
  if source_lang_override and source_lang_override in MODEL_MAP:
102
  source_lang = source_lang_override
103
  logger.debug(f"Source language overridden by user to: '{source_lang_override}'.")
104
  else:
105
+ source_lang = await asyncio.to_thread(detect_language, text)
106
  logger.debug(f"Determined source language for translation: '{source_lang}'.")
107
 
108
  # If source language is English, return original text
 
138
  raise e
139
  except Exception as e:
140
  logger.error(f"An unexpected error occurred during processing: {str(e)}", exc_info=True)
141
+ raise HTTPException(status_code=500, detail=f"Processing failed: {str(e)}")