仓库 1:后端 https://gitlab.com/Tritium0041/sd-distribution
仓库 2:客户端控制器:https://gitlab.com/Tritium0041/SD-client
是个什么东西呢:
用户注册账号登录
提交绘画任务给服务器
存进数据库
跑图的 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 的设置实现稳定的持续跑图 画完自动交
画完的图存进文件夹
用户选择任务拉取图片
我只试了我一个 worker 的情况 不知道多个 worker 会不会因为网络问题导致什么 bug