MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / ensure_project_exists

Method ensure_project_exists

src/services/token_manager.py:920–951  ·  view source on GitHub ↗

Ensure a token has a pooled set of projects and return one in round-robin order.

(self, token_id: int)

Source from the content-addressed store, hash-verified

918 debug_logger.log_warning(f"[PROTOCOL_REFRESH] 停止后台任务时出错: {e}")
919
920 async def ensure_project_exists(self, token_id: int) -> str:
921 """Ensure a token has a pooled set of projects and return one in round-robin order."""
922 project_lock = await self._get_token_lock(
923 self._project_locks,
924 self._project_lock_guard,
925 token_id,
926 )
927 async with project_lock:
928 token = await self.db.get_token(token_id)
929 if not token:
930 raise ValueError("Token not found")
931
932 projects = [project for project in await self.db.get_projects_by_token(token_id) if project.is_active]
933 projects = self._sort_projects(projects)
934
935 try:
936 project_pool_size = self._get_project_pool_size()
937 while len(projects) < project_pool_size:
938 new_project = await self._create_project_for_token(token, len(projects) + 1)
939 projects.append(new_project)
940 projects = self._sort_projects(projects)
941
942 selectable_projects = projects[:project_pool_size]
943 selected_project = self._select_next_project(token, selectable_projects)
944 await self.db.update_token(
945 token_id,
946 current_project_id=selected_project.project_id,
947 current_project_name=selected_project.project_name,
948 )
949 return selected_project.project_id
950 except Exception as e:
951 raise ValueError(f"Failed to prepare project pool: {str(e)}")
952
953 async def record_usage(self, token_id: int, is_video: bool = False):
954 """Record token usage"""

Callers 1

handle_generationMethod · 0.80

Calls 8

_get_token_lockMethod · 0.95
_sort_projectsMethod · 0.95
_select_next_projectMethod · 0.95
get_projects_by_tokenMethod · 0.80
get_tokenMethod · 0.45
update_tokenMethod · 0.45

Tested by

no test coverage detected