expo_postprocess wait for sd finish
This commit is contained in:
parent
8a4ced5435
commit
f5f947f6c2
30
app.py
30
app.py
|
@ -1,3 +1,4 @@
|
|||
import asyncio
|
||||
import base64
|
||||
import hashlib
|
||||
import json
|
||||
|
@ -129,15 +130,36 @@ def expo_clear_images():
|
|||
os.remove(os.path.join(root, file))
|
||||
|
||||
@app.route('/expo_postprocess', methods=['POST'])
|
||||
def expo_postprocess():
|
||||
async def expo_postprocess():
|
||||
global on_postprocessing
|
||||
if on_postprocessing:
|
||||
return jsonify({"status": "error", "message": "Postprocessing in progress"}), 503
|
||||
print("Postprocessing")
|
||||
|
||||
on_postprocessing = True
|
||||
expo_postprocess_main()
|
||||
expo_clear_images()
|
||||
print("Postprocessing")
|
||||
|
||||
# Wait until the directories have the same files or timeout
|
||||
if not await wait_for_files_to_match(expo_openpose_dir, expo_raw_sd_dir):
|
||||
print("Timeout reached, proceeding with postprocessing")
|
||||
|
||||
await asyncio.to_thread(expo_postprocess_main)
|
||||
await asyncio.to_thread(expo_clear_images)
|
||||
on_postprocessing = False
|
||||
|
||||
return jsonify({"status": "success", "message": "Postprocessing completed"}), 200
|
||||
|
||||
|
||||
async def wait_for_files_to_match(dir1: str, dir2: str, timeout: int = 60, interval: int = 1) -> bool:
|
||||
start_time = asyncio.get_event_loop().time()
|
||||
while asyncio.get_event_loop().time() - start_time < timeout:
|
||||
files1 = set(os.listdir(dir1))
|
||||
files2 = set(os.listdir(dir2))
|
||||
if files1 == files2:
|
||||
return True
|
||||
await asyncio.sleep(interval)
|
||||
return False
|
||||
|
||||
|
||||
@app.route('/gen_image', methods=['POST'])
|
||||
def gen_image():
|
||||
if request.is_json:
|
||||
|
|
Loading…
Reference in New Issue