d84212f780
正式发布 Pretor 平台的首个 alpha 版本。本项目旨在构建一个基于分布式架构的多智能体协同工作流水线。 核心功能实现: 1. 建立基于 BaseIndividual 的动态插件加载机制。 2. 实现三类核心 worker_individual 子个体。 3. 集成 Ray 框架支持分布式集群调度。 4. 基于 PostgreSQL 的全量持久化存储方案。 5. 提供完整的 FastAPI 后端与 React 前端交互界面。
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
|
import asyncio
|
|
from functools import wraps
|
|
from pretor.utils.error import RetryableError
|
|
|
|
def retry_on_retryable_error(max_retries=3, base_delay=1):
|
|
def decorator(func):
|
|
if asyncio.iscoroutinefunction(func):
|
|
@wraps(func)
|
|
async def async_wrapper(*args, **kwargs):
|
|
for attempt in range(max_retries):
|
|
try:
|
|
return await func(*args, **kwargs)
|
|
except RetryableError:
|
|
if attempt == max_retries - 1:
|
|
raise
|
|
await asyncio.sleep(base_delay * (2 ** attempt))
|
|
return async_wrapper
|
|
else:
|
|
@wraps(func)
|
|
def sync_wrapper(*args, **kwargs):
|
|
import time
|
|
for attempt in range(max_retries):
|
|
try:
|
|
return func(*args, **kwargs)
|
|
except RetryableError:
|
|
if attempt == max_retries - 1:
|
|
raise
|
|
time.sleep(base_delay * (2 ** attempt))
|
|
return sync_wrapper
|
|
return decorator
|