【优化ComfyUI API:自动化脚本解决绘图任务导致的磁盘性能瓶颈】

在最近的项目实施过程中,我们遇到了一个性能瓶颈:在线调用ComfyUI的API进行绘画时,速度逐渐下降。经过深入调查,我们发现问题根源在于累积的任务量过大。经过一整天的绘图作业,生成的图片文件在输出目录中占用了超过10GB的磁盘空间,这严重影响了通过view接口检索文件的速度。为了解决这一问题,我建了一个自动化任务计划,该计划每小时自动执行一次PowerShell脚本,以清理不再需要的图片文件,从而优化磁盘性能并提升系统响应速度。

1、创建PowerShell脚本

把以下代码保存为文件 CleanupOldFilesOfoutput.ps1 放在comfyui根目录下。

$targetDir = "E:\SD\kolors\output" # 替换为你的output目录的实际路径
$limit = (Get-Date).AddHours(-1) # 设置1小时前的时间点
# 遍历output目录下的所有文件
Get-ChildItem -Path $targetDir -File | ForEach-Object {
    $filePath = $_.FullName
    $fileCreationTime = $_.CreationTime
    # 打印文件的创建时间
    Write-Host "File: $filePath, Creation Time: $fileCreationTime"
    # 判断文件的创建时间是否是1小时前
    if ($fileCreationTime -lt $limit) {
        # 如果是1小时前创建的,就删除文件
        Write-Host "Deleting file: $filePath"
        Remove-Item -Path $filePath -Force
    } else {
        # 如果不是1小时前创建的,就打印不删除
        Write-Host "Not deleting file: $filePath"
    }
}

2、创建自动执行任务计划

下面再用cmd命令创建个任务计划 Create_CleanupOldFilesOfoutputs_Task.bat 放到comfyui根目录下。

@echo off
set TASK_NAME=CleanupOldFilesOfoutputsTask
set TASK_COMMAND=powershell -File  %~dp0CleanupOldFilesOfoutput.ps1

REM 查询任务计划
schtasks /query /TN %TASK_NAME% /FO LIST | findstr %TASK_NAME%
REM 如果上面的命令返回了任务计划的名称,说明任务计划存在
if %errorlevel% EQU 0 (
    echo Task %TASK_NAME% exists. Deleting it...
    schtasks /delete /TN %TASK_NAME% /F
    if %errorlevel% neq 0 (
        echo Failed to delete task %TASK_NAME%
        exit /b %errorlevel%
    )
)

REM 创建新的任务计划
echo Creating task %TASK_NAME%...
schtasks /create /sc hourly /st 00:00 /tn %TASK_NAME% /tr "%TASK_COMMAND%" /ru SYSTEM
if %errorlevel% NEQ 0 (
    echo Failed to create task %TASK_NAME%
    exit /b %errorlevel%
)

echo Task %TASK_NAME% created successfully.

3、执行创建任务计划脚本

最后用管理员权限Create_CleanupOldFilesOfoutputs_Task.bat执行即可.

Windows 11:按Windows 键 + R,输入“cmd”,按Ctrl + Shift + Enter
在这里插入图片描述

4、测试任务计划

在cmd命令行执行以下脚本测试

powershell -File E:\SD\kolors\CleanupOldFilesOfoutput.ps1

如果执行失败,需要更改执行策略 ,打开PowerShell执行以下命令:

在 Windows 搜索栏中输入 PowerShell,然后右键点击 Windows PowerShell 并选择 以管理员身份运行

在 PowerShell 窗口中,输入 Get-ExecutionPolicy 并按回车。这将显示当前的执行策略设置。

如果显示Restricted,则需要执行以下命令来更改执行策略。

输入以下命令之一,然后按回车:

Set-ExecutionPolicy RemoteSigned

或者

Set-ExecutionPolicy Unrestricted

系统可能会提示你确认更改。输入 Y 并按回车以继续。

再次测试,提示正在删除文件即已完成设置

在这里插入图片描述

5、总结与建议

完成上述设置后,您将不再受制于图片数量过多导致的存储空间膨胀,以及由此引发的接口响应速度减慢问题。若需评估图片生成效果,您可以通过调整PowerShell脚本,延长文件保留时间,以满足您的查看需求。此方案特别适用于线上任务执行环境,而在个人测试场景中,由于任务量较小,通常不会对绘图速度造成影响,因此清理操作并非必要。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值