支持runninghub并发限制可配置

This commit is contained in:
puke
2025-12-28 14:56:22 +08:00
parent 5a2334ccde
commit 1530d1f8c8
7 changed files with 29 additions and 7 deletions

View File

@@ -24,6 +24,7 @@ comfyui:
comfyui_api_key: "" # ComfyUI API key (optional, get from https://platform.comfy.org/profile/api-keys)
# Note for Docker users: Use host.docker.internal:8188 (Mac/Windows) or host IP address (Linux)
runninghub_api_key: "" # RunningHub API key (required for runninghub workflows)
runninghub_concurrent_limit: 1 # Concurrent execution limit for RunningHub (1-10, default 1 for regular members)
# TTS-specific configuration
tts:

View File

@@ -130,6 +130,7 @@ class ConfigManager:
"comfyui_url": self.config.comfyui.comfyui_url,
"comfyui_api_key": self.config.comfyui.comfyui_api_key,
"runninghub_api_key": self.config.comfyui.runninghub_api_key,
"runninghub_concurrent_limit": self.config.comfyui.runninghub_concurrent_limit,
"tts": {
"default_workflow": self.config.comfyui.tts.default_workflow,
},
@@ -147,7 +148,8 @@ class ConfigManager:
self,
comfyui_url: Optional[str] = None,
comfyui_api_key: Optional[str] = None,
runninghub_api_key: Optional[str] = None
runninghub_api_key: Optional[str] = None,
runninghub_concurrent_limit: Optional[int] = None
):
"""Set ComfyUI global configuration"""
updates = {}
@@ -157,6 +159,8 @@ class ConfigManager:
updates["comfyui_api_key"] = comfyui_api_key
if runninghub_api_key is not None:
updates["runninghub_api_key"] = runninghub_api_key
if runninghub_concurrent_limit is not None:
updates["runninghub_concurrent_limit"] = runninghub_concurrent_limit
if updates:
self.update({"comfyui": updates})

View File

@@ -73,6 +73,7 @@ class ComfyUIConfig(BaseModel):
comfyui_url: str = Field(default="http://127.0.0.1:8188", description="ComfyUI Server URL")
comfyui_api_key: Optional[str] = Field(default=None, description="ComfyUI API Key (optional)")
runninghub_api_key: Optional[str] = Field(default=None, description="RunningHub API Key (optional)")
runninghub_concurrent_limit: int = Field(default=1, ge=1, le=10, description="RunningHub concurrent execution limit (1-10)")
tts: TTSSubConfig = Field(default_factory=TTSSubConfig, description="TTS-specific configuration")
image: ImageSubConfig = Field(default_factory=ImageSubConfig, description="Image-specific configuration")
video: VideoSubConfig = Field(default_factory=VideoSubConfig, description="Video-specific configuration")

View File

@@ -50,8 +50,6 @@ from pixelle_video.utils.prompt_helper import build_image_prompt
from pixelle_video.services.video import VideoService
# Parallel limit for RunningHub workflows (Call by sequential if set to 1)
RUNNING_HUB_PARALLEL_LIMIT = 1
class StandardPipeline(LinearVideoPipeline):
@@ -303,10 +301,13 @@ class StandardPipeline(LinearVideoPipeline):
(config.media_workflow and config.media_workflow.startswith("runninghub/"))
)
if is_runninghub and RUNNING_HUB_PARALLEL_LIMIT > 1:
logger.info(f"🚀 Using parallel processing for RunningHub workflows (max {RUNNING_HUB_PARALLEL_LIMIT} concurrent)")
# Get concurrent limit from config (default to 1 for backward compatibility)
runninghub_concurrent_limit = self.core.config.get("comfyui", {}).get("runninghub_concurrent_limit", 1)
if is_runninghub and runninghub_concurrent_limit > 1:
logger.info(f"🚀 Using parallel processing for RunningHub workflows (max {runninghub_concurrent_limit} concurrent)")
semaphore = asyncio.Semaphore(RUNNING_HUB_PARALLEL_LIMIT)
semaphore = asyncio.Semaphore(runninghub_concurrent_limit)
completed_count = 0
async def process_frame_with_semaphore(i: int, frame: StoryboardFrame):

View File

@@ -179,6 +179,16 @@ def render_advanced_settings():
f"[{tr('settings.comfyui.runninghub_get_api_key')}]"
f"(https://www.runninghub{'.cn' if get_language() == 'zh_CN' else '.ai'}/?inviteCode=bozpdlbj)"
)
# RunningHub concurrent limit
runninghub_concurrent_limit = st.number_input(
tr("settings.comfyui.runninghub_concurrent_limit"),
min_value=1,
max_value=10,
value=comfyui_config.get("runninghub_concurrent_limit", 1),
help=tr("settings.comfyui.runninghub_concurrent_limit_help"),
key="runninghub_concurrent_limit_input"
)
# ====================================================================
# Action Buttons (full width at bottom)
@@ -199,7 +209,8 @@ def render_advanced_settings():
config_manager.set_comfyui_config(
comfyui_url=comfyui_url if comfyui_url else None,
comfyui_api_key=comfyui_api_key if comfyui_api_key else None,
runninghub_api_key=runninghub_api_key if runninghub_api_key else None
runninghub_api_key=runninghub_api_key if runninghub_api_key else None,
runninghub_concurrent_limit=int(runninghub_concurrent_limit)
)
# Only save to file if LLM config is valid

View File

@@ -195,6 +195,8 @@
"settings.comfyui.runninghub_api_key_help": "Visit https://runninghub.ai to register and get API Key",
"settings.comfyui.runninghub_hint": "No local ComfyUI? Use RunningHub Cloud:",
"settings.comfyui.runninghub_get_api_key": "Get RunningHub API Key",
"settings.comfyui.runninghub_concurrent_limit": "Concurrent Limit",
"settings.comfyui.runninghub_concurrent_limit_help": "RunningHub concurrent execution limit (1-10), default is 1 for regular members, adjust based on your membership level",
"tts.inference_mode": "Synthesis Mode",
"tts.mode.local": "Local Synthesis",
"tts.mode.comfyui": "ComfyUI Synthesis",

View File

@@ -195,6 +195,8 @@
"settings.comfyui.runninghub_api_key_help": "访问 https://runninghub.ai 注册并获取 API Key",
"settings.comfyui.runninghub_hint": "没有本地 ComfyUI可用 RunningHub 云端:",
"settings.comfyui.runninghub_get_api_key": "点此获取 RunningHub API Key",
"settings.comfyui.runninghub_concurrent_limit": "并发限制",
"settings.comfyui.runninghub_concurrent_limit_help": "RunningHub 并发执行数量1-10普通会员默认为1请根据您的会员等级调整",
"tts.inference_mode": "合成方式",
"tts.mode.local": "本地合成",
"tts.mode.comfyui": "ComfyUI 合成",