PERF 重定向日志到S3
This commit is contained in:
parent
e390b015ec
commit
c0ae96622f
|
|
@ -3,5 +3,5 @@
|
||||||
<component name="Black">
|
<component name="Black">
|
||||||
<option name="sdkName" value="Python 3.9 (pythonProject)" />
|
<option name="sdkName" value="Python 3.9 (pythonProject)" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="ComfyUI" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="ComfyUI-3.10" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="ComfyUI" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="ComfyUI-3.10" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
|
|
@ -52,10 +52,10 @@ image = (
|
||||||
.run_commands("comfy node install https://github.com/rgthree/rgthree-comfy")
|
.run_commands("comfy node install https://github.com/rgthree/rgthree-comfy")
|
||||||
.run_commands("comfy node install https://github.com/cubiq/ComfyUI_essentials")
|
.run_commands("comfy node install https://github.com/cubiq/ComfyUI_essentials")
|
||||||
.run_commands("comfy node install https://github.com/melMass/comfy_mtb")
|
.run_commands("comfy node install https://github.com/melMass/comfy_mtb")
|
||||||
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-CustomNode.git")
|
||||||
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI_SparkTTS.git")
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI_SparkTTS.git")
|
||||||
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/cosyvoice_comfyui.git")
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/cosyvoice_comfyui.git")
|
||||||
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-LatentSync-Node.git")
|
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-LatentSync-Node.git")
|
||||||
.run_commands("comfy node install https://e.coding.net/g-ldyi2063/dev/ComfyUI-CustomNode.git")
|
|
||||||
.run_commands(
|
.run_commands(
|
||||||
"mkdir -p /root/comfy/ComfyUI/models/ComfyUI-CustomNode/model && rm -rf /root/comfy/ComfyUI/custom_nodes/ComfyUI-CustomNode/model && ln -s /root/comfy/ComfyUI/models/ComfyUI-CustomNode/model /root/comfy/ComfyUI/custom_nodes/ComfyUI-CustomNode/model"
|
"mkdir -p /root/comfy/ComfyUI/models/ComfyUI-CustomNode/model && rm -rf /root/comfy/ComfyUI/custom_nodes/ComfyUI-CustomNode/model && ln -s /root/comfy/ComfyUI/models/ComfyUI-CustomNode/model /root/comfy/ComfyUI/custom_nodes/ComfyUI-CustomNode/model"
|
||||||
).run_commands(
|
).run_commands(
|
||||||
|
|
@ -120,13 +120,15 @@ class ComfyUI:
|
||||||
@modal.enter()
|
@modal.enter()
|
||||||
def launch_comfy_background(self):
|
def launch_comfy_background(self):
|
||||||
# starts the ComfyUI server in the background exactly once when the first input is received
|
# starts the ComfyUI server in the background exactly once when the first input is received
|
||||||
|
self.session_id = str(uuid.uuid4())
|
||||||
|
cmd = "echo client_uuid: {}&&rm -rf /root/comfy/ComfyUI/user&&mkdir -p /root/comfy/ComfyUI/output_s3/logs/{}&&ln -s /root/comfy/ComfyUI/output_s3/logs/{} /root/comfy/ComfyUI/user".format(self.session_id,self.session_id, self.session_id)
|
||||||
|
subprocess.run(cmd, shell=True, check=True)
|
||||||
cmd = "comfy launch --background"
|
cmd = "comfy launch --background"
|
||||||
subprocess.run(cmd, shell=True, check=True)
|
subprocess.run(cmd, shell=True, check=True)
|
||||||
|
|
||||||
@modal.method()
|
@modal.method()
|
||||||
def infer(self, workflow_json: str = ""):
|
def infer(self, workflow_json: str = ""):
|
||||||
# runs the comfy run --workflow command as a subprocess
|
# runs the comfy run --workflow command as a subprocess
|
||||||
session_id = str(uuid.uuid4())
|
|
||||||
workflow = json.loads(workflow_json)
|
workflow = json.loads(workflow_json)
|
||||||
for node in workflow.values():
|
for node in workflow.values():
|
||||||
if node.get("class_type") == "ComfyUIDeployExternalText":
|
if node.get("class_type") == "ComfyUIDeployExternalText":
|
||||||
|
|
@ -136,9 +138,9 @@ class ComfyUI:
|
||||||
os.makedirs(os.path.dirname(file_to_move.replace("input_s3", "input")), exist_ok=True)
|
os.makedirs(os.path.dirname(file_to_move.replace("input_s3", "input")), exist_ok=True)
|
||||||
shutil.copy(file_to_move, file_to_move.replace("input_s3", "input"))
|
shutil.copy(file_to_move, file_to_move.replace("input_s3", "input"))
|
||||||
node["inputs"]["default_value"] = node["inputs"]["default_value"].replace("input_s3", "input")
|
node["inputs"]["default_value"] = node["inputs"]["default_value"].replace("input_s3", "input")
|
||||||
with open(f"/root/{session_id}.json", "w", encoding="utf-8") as f:
|
with open(f"/root/{self.session_id}.json", "w", encoding="utf-8") as f:
|
||||||
f.write(json.dumps(workflow, ensure_ascii=False))
|
f.write(json.dumps(workflow, ensure_ascii=False))
|
||||||
cmd = f"comfy run --workflow /root/{session_id}.json --wait --timeout 900 --verbose"
|
cmd = f"comfy run --workflow /root/{self.session_id}.json --wait --timeout 900 --verbose"
|
||||||
subprocess.run(cmd, shell=True, check=True)
|
subprocess.run(cmd, shell=True, check=True)
|
||||||
|
|
||||||
# looks up the name of the output image file based on the workflow
|
# looks up the name of the output image file based on the workflow
|
||||||
|
|
@ -160,7 +162,7 @@ class ComfyUI:
|
||||||
shutil.copy(os.path.join(output_dir, f), os.path.join(output_dir.replace("output", "output_s3"), f))
|
shutil.copy(os.path.join(output_dir, f), os.path.join(output_dir.replace("output", "output_s3"), f))
|
||||||
return f
|
return f
|
||||||
|
|
||||||
@modal.web_endpoint(method="POST")
|
@modal.fastapi_endpoint(method="POST")
|
||||||
def api(self, item: Dict):
|
def api(self, item: Dict):
|
||||||
from fastapi import Response
|
from fastapi import Response
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue