设计模式-注册表模式

用字典(键:task_id,值:asyncio.Task 对象)维护 "活跃轮询任务" 的映射关系,实现 "任务注册 - 查询 - 注销"

用**信号量(Semaphore)**限制并发数

python 复制代码
async with self.semaphore:
    while True:
        if datetime.now() - start_time > timedelta(seconds=self.task_timeout):
            task = await TranscriptionTask.get_by_id(self.db, task_id)
            if task:
                await task.mark_as_completed(
                    self.db, 
                    result_text=f"任务超时 (超过{self.task_timeout}秒)", 
                    task_status="FAILED"
                )
            break

        transcribe_response = Transcription.fetch(task=asr_task_id)
        task_status = transcribe_response.output.task_status

        if task_status != last_status:
            last_status = task_status

        if task_status == 'PENDING':
            current_interval = await self._handle_pending_status(task_id, current_interval)
            await asyncio.sleep(current_interval)
        elif task_status == 'RUNNING':
            current_interval = await self._handle_running_status(task_id, current_interval)
            await asyncio.sleep(current_interval)
        elif task_status == 'SUCCEEDED':
            results = transcribe_response.output.results[0] if transcribe_response.output.results else None
            if await self._handle_succeeded_status(task_id, asr_task_id, local_file_path, results):
                break
相关推荐
Momentary_SixthSense1 天前
设计模式之工厂模式
java·开发语言·设计模式
Java码农也是农1 天前
Multi-Agent 系统设计模式
设计模式·agent·multi-agent
sg_knight1 天前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
workflower1 天前
深度学习是通用型人工智能的基础
人工智能·深度学习·设计模式·软件工程·软件构建·制造
Meme Buoy1 天前
11.3设计模式-新
设计模式
cmpxr_1 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
无籽西瓜a1 天前
【西瓜带你学设计模式 | 第十五期 - 策略模式】策略模式 —— 算法封装与动态替换实现、优缺点与适用场景
java·后端·设计模式·软件工程·策略模式
Kel2 天前
Claude Code 架构深度剖析:从终端输入到大模型响应的完整过程
人工智能·设计模式·架构
￰meteor2 天前
23种设计模式 -【观察者】
设计模式
妙蛙种子3112 天前
【Java设计模式 | 创建者模式】 抽象工厂模式
java·开发语言·后端·设计模式·抽象工厂模式