diff --git a/s2a_service.py b/s2a_service.py index e857aeb..f576b3f 100644 --- a/s2a_service.py +++ b/s2a_service.py @@ -710,7 +710,7 @@ def s2a_create_account_from_oauth( full_email = name if "@" in name else "" if name: - payload["name"] = f"team-{name}" + payload["name"] = name if name.startswith("team-") else f"team-{name}" if proxy_id is not None: payload["proxy_id"] = proxy_id @@ -790,8 +790,9 @@ def s2a_add_account( if token_info.get("email"): credentials["email"] = token_info.get("email") + s2a_name = name if name.startswith("team-") else f"team-{name}" payload = { - "name": f"team-{name}", + "name": s2a_name, "platform": "openai", "type": "oauth", "credentials": credentials, diff --git a/telegram_bot.py b/telegram_bot.py index 1f9c05a..b50db01 100644 --- a/telegram_bot.py +++ b/telegram_bot.py @@ -3985,18 +3985,16 @@ class ProvisionerBot: if worker_id in current_steps: del current_steps[worker_id] - # 使用线程池并发执行 + # 使用线程池并发执行 (通过 run_in_executor 避免阻塞 event loop) import concurrent.futures + loop = asyncio.get_event_loop() with concurrent.futures.ThreadPoolExecutor(max_workers=workers) as executor: - futures = [executor.submit(worker_task, i) for i in range(workers)] - - # 等待所有任务完成 - for future in concurrent.futures.as_completed(futures): - try: - future.result() - except Exception as e: - log.error(f"Worker 异常: {e}") + async_futures = [loop.run_in_executor(executor, worker_task, i) for i in range(workers)] + results_done = await asyncio.gather(*async_futures, return_exceptions=True) + for r in results_done: + if isinstance(r, Exception): + log.error(f"Worker 异常: {r}") # 检查是否被停止 stopped = False