支持runninghub并发限制可配置
This commit is contained in:
@@ -24,6 +24,7 @@ comfyui:
|
|||||||
comfyui_api_key: "" # ComfyUI API key (optional, get from https://platform.comfy.org/profile/api-keys)
|
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)
|
# 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_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-specific configuration
|
||||||
tts:
|
tts:
|
||||||
|
|||||||
@@ -130,6 +130,7 @@ class ConfigManager:
|
|||||||
"comfyui_url": self.config.comfyui.comfyui_url,
|
"comfyui_url": self.config.comfyui.comfyui_url,
|
||||||
"comfyui_api_key": self.config.comfyui.comfyui_api_key,
|
"comfyui_api_key": self.config.comfyui.comfyui_api_key,
|
||||||
"runninghub_api_key": self.config.comfyui.runninghub_api_key,
|
"runninghub_api_key": self.config.comfyui.runninghub_api_key,
|
||||||
|
"runninghub_concurrent_limit": self.config.comfyui.runninghub_concurrent_limit,
|
||||||
"tts": {
|
"tts": {
|
||||||
"default_workflow": self.config.comfyui.tts.default_workflow,
|
"default_workflow": self.config.comfyui.tts.default_workflow,
|
||||||
},
|
},
|
||||||
@@ -147,7 +148,8 @@ class ConfigManager:
|
|||||||
self,
|
self,
|
||||||
comfyui_url: Optional[str] = None,
|
comfyui_url: Optional[str] = None,
|
||||||
comfyui_api_key: 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"""
|
"""Set ComfyUI global configuration"""
|
||||||
updates = {}
|
updates = {}
|
||||||
@@ -157,6 +159,8 @@ class ConfigManager:
|
|||||||
updates["comfyui_api_key"] = comfyui_api_key
|
updates["comfyui_api_key"] = comfyui_api_key
|
||||||
if runninghub_api_key is not None:
|
if runninghub_api_key is not None:
|
||||||
updates["runninghub_api_key"] = runninghub_api_key
|
updates["runninghub_api_key"] = runninghub_api_key
|
||||||
|
if runninghub_concurrent_limit is not None:
|
||||||
|
updates["runninghub_concurrent_limit"] = runninghub_concurrent_limit
|
||||||
|
|
||||||
if updates:
|
if updates:
|
||||||
self.update({"comfyui": updates})
|
self.update({"comfyui": updates})
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ class ComfyUIConfig(BaseModel):
|
|||||||
comfyui_url: str = Field(default="http://127.0.0.1:8188", description="ComfyUI Server URL")
|
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)")
|
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_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")
|
tts: TTSSubConfig = Field(default_factory=TTSSubConfig, description="TTS-specific configuration")
|
||||||
image: ImageSubConfig = Field(default_factory=ImageSubConfig, description="Image-specific configuration")
|
image: ImageSubConfig = Field(default_factory=ImageSubConfig, description="Image-specific configuration")
|
||||||
video: VideoSubConfig = Field(default_factory=VideoSubConfig, description="Video-specific configuration")
|
video: VideoSubConfig = Field(default_factory=VideoSubConfig, description="Video-specific configuration")
|
||||||
|
|||||||
@@ -50,8 +50,6 @@ from pixelle_video.utils.prompt_helper import build_image_prompt
|
|||||||
from pixelle_video.services.video import VideoService
|
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):
|
class StandardPipeline(LinearVideoPipeline):
|
||||||
@@ -303,10 +301,13 @@ class StandardPipeline(LinearVideoPipeline):
|
|||||||
(config.media_workflow and config.media_workflow.startswith("runninghub/"))
|
(config.media_workflow and config.media_workflow.startswith("runninghub/"))
|
||||||
)
|
)
|
||||||
|
|
||||||
if is_runninghub and RUNNING_HUB_PARALLEL_LIMIT > 1:
|
# Get concurrent limit from config (default to 1 for backward compatibility)
|
||||||
logger.info(f"🚀 Using parallel processing for RunningHub workflows (max {RUNNING_HUB_PARALLEL_LIMIT} concurrent)")
|
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
|
completed_count = 0
|
||||||
|
|
||||||
async def process_frame_with_semaphore(i: int, frame: StoryboardFrame):
|
async def process_frame_with_semaphore(i: int, frame: StoryboardFrame):
|
||||||
|
|||||||
@@ -179,6 +179,16 @@ def render_advanced_settings():
|
|||||||
f"[{tr('settings.comfyui.runninghub_get_api_key')}]"
|
f"[{tr('settings.comfyui.runninghub_get_api_key')}]"
|
||||||
f"(https://www.runninghub{'.cn' if get_language() == 'zh_CN' else '.ai'}/?inviteCode=bozpdlbj)"
|
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)
|
# Action Buttons (full width at bottom)
|
||||||
@@ -199,7 +209,8 @@ def render_advanced_settings():
|
|||||||
config_manager.set_comfyui_config(
|
config_manager.set_comfyui_config(
|
||||||
comfyui_url=comfyui_url if comfyui_url else None,
|
comfyui_url=comfyui_url if comfyui_url else None,
|
||||||
comfyui_api_key=comfyui_api_key if comfyui_api_key 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
|
# Only save to file if LLM config is valid
|
||||||
|
|||||||
@@ -195,6 +195,8 @@
|
|||||||
"settings.comfyui.runninghub_api_key_help": "Visit https://runninghub.ai to register and get API Key",
|
"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_hint": "No local ComfyUI? Use RunningHub Cloud:",
|
||||||
"settings.comfyui.runninghub_get_api_key": "Get RunningHub API Key",
|
"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.inference_mode": "Synthesis Mode",
|
||||||
"tts.mode.local": "Local Synthesis",
|
"tts.mode.local": "Local Synthesis",
|
||||||
"tts.mode.comfyui": "ComfyUI Synthesis",
|
"tts.mode.comfyui": "ComfyUI Synthesis",
|
||||||
|
|||||||
@@ -195,6 +195,8 @@
|
|||||||
"settings.comfyui.runninghub_api_key_help": "访问 https://runninghub.ai 注册并获取 API Key",
|
"settings.comfyui.runninghub_api_key_help": "访问 https://runninghub.ai 注册并获取 API Key",
|
||||||
"settings.comfyui.runninghub_hint": "没有本地 ComfyUI?可用 RunningHub 云端:",
|
"settings.comfyui.runninghub_hint": "没有本地 ComfyUI?可用 RunningHub 云端:",
|
||||||
"settings.comfyui.runninghub_get_api_key": "点此获取 RunningHub API Key",
|
"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.inference_mode": "合成方式",
|
||||||
"tts.mode.local": "本地合成",
|
"tts.mode.local": "本地合成",
|
||||||
"tts.mode.comfyui": "ComfyUI 合成",
|
"tts.mode.comfyui": "ComfyUI 合成",
|
||||||
|
|||||||
Reference in New Issue
Block a user