Spaces:
Running
Running
| from threading import BoundedSemaphore | |
| from concurrent.futures import ThreadPoolExecutor | |
| from opus_api.model import run, run_batch | |
| from typing import List | |
| MAX_PARALLEL = 4 | |
| sema = BoundedSemaphore(MAX_PARALLEL) | |
| executor = ThreadPoolExecutor(max_workers=MAX_PARALLEL) | |
| def sema_translate(text: str): | |
| with sema: | |
| return run(text) | |
| def sema_translate_batch(text_list: List[str]): | |
| with sema: | |
| return run_batch(text_list) | |
| async def translate(text: str): | |
| future = executor.submit(sema_translate, text) | |
| return [ | |
| 200, | |
| { | |
| "translated_text": future.result() | |
| } | |
| ] | |
| async def translate_batch(texts: List[str]): | |
| future = executor.submit(sema_translate_batch, texts) | |
| return [ | |
| 200, | |
| { | |
| "translated_text": future.result() | |
| } | |
| ] | |
| async def status(task_id: str): pass | |