仓库 1:后端 https://gitlab.com/Tritium0041/sd-distribution

仓库 2:客户端控制器:https://gitlab.com/Tritium0041/SD-client

是个什么东西呢:

用户注册账号登录

Untitled.png

Untitled.png

提交绘画任务给服务器

Untitled.png

存进数据库

Untitled.png

跑图的 worker 用客户端控制器检测环境 接入网络

def worktheard():
    global running_flag
    global token
    token = eel.getToken()()
    print(token)
    print("开始画图流程")
    global flag
    if token == "":
        time.sleep(5)
        running_flag = False
        pass
    res = claim_task(token)
    if res == False:
        time.sleep(5)
        running_flag = False
        pass
    param = res["task_detail"]
    task_name = res['task_name']
    task_num = res['task_num']
    param["batch_size"] = task_num
    res = requests.post("http://127.0.0.1:7860/sdapi/v1/txt2img", json=param).json()
    print("画图完成 准备提交")
    for img in res['images']:
        submit_task(token, task_name, 1, [img])
    # submit = submit_task(token, task_name, task_num, res['images'])
    # print(submit)
    running_flag = False
def monitor():
    global flag
    global running_flag
    print("守护进程启动")
    while True:
        lock.acquire()
        if flag:
            if running_flag:
                lock.release()
            else:
                running_flag = True
                lock.release()
                t = threading.Thread(target=worktheard)
                t.start()
        else:
            running_flag = False
            lock.release()
        time.sleep(1)

通过一个运行时 flag 的设置实现稳定的持续跑图 画完自动交

Untitled.png

画完的图存进文件夹

用户选择任务拉取图片

Untitled.png

我只试了我一个 worker 的情况 不知道多个 worker 会不会因为网络问题导致什么 bug