|  | @@ -1,7 +1,7 @@
 | 
	
		
			
				|  |  |  from typing import Any, List, Optional
 | 
	
		
			
				|  |  |  import subprocess
 | 
	
		
			
				|  |  |  from fastapi import UploadFile, File, Form
 | 
	
		
			
				|  |  | -from fastapi.responses import FileResponse
 | 
	
		
			
				|  |  | +from fastapi.responses import FileResponse, JSONResponse
 | 
	
		
			
				|  |  |  from fastapi import APIRouter, Depends, HTTPException
 | 
	
		
			
				|  |  |  from fastapi import WebSocket, BackgroundTasks
 | 
	
		
			
				|  |  |  from sqlalchemy.orm import Session
 | 
	
	
		
			
				|  | @@ -52,19 +52,36 @@ async def supser_resolution(
 | 
	
		
			
				|  |  |            return {"error": str(e)}
 | 
	
		
			
				|  |  |        finally:
 | 
	
		
			
				|  |  |            upload_files[i].file.close()
 | 
	
		
			
				|  |  | -    source = [f"{str(BACKEND_ZIP_STORAGE/filename)}" for filename in filenames]
 | 
	
		
			
				|  |  | -    r = subprocess.run(["sshpass", "-p", "choozmo9", 
 | 
	
		
			
				|  |  | -                    "scp", "-P", "5722", "-o", "StrictHostKeyChecking=no", "-r", f"{str(new_dir_path)}", f"root@172.104.93.163:{str(LOCAL_ZIP_STORAGE)}"])
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    background_tasks.add_task(wait_finish, new_dir_path, stemnames)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    background_tasks.add_task(wait_finish, new_dir, filenames)
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      print(filenames)
 | 
	
		
			
				|  |  | -    return {"filenames": stemnames}
 | 
	
		
			
				|  |  | +    return JSONResponse({"filenames": filenames}, background=background_tasks)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  async def wait_finish(dirname, filenames):
 | 
	
		
			
				|  |  | +    process = await asyncio.create_subprocess_exec("sshpass", "-p", "choozmo9", 
 | 
	
		
			
				|  |  | +                     "scp", "-P", "5722", "-o", "StrictHostKeyChecking=no", "-r", f"{str(BACKEND_ZIP_STORAGE/dirname)}", f"root@172.104.93.163:{str(LOCAL_ZIP_STORAGE)}")
 | 
	
		
			
				|  |  | +    await process.wait()
 | 
	
		
			
				|  |  | +    # r = subprocess.run(["sshpass", "-p", "choozmo9", 
 | 
	
		
			
				|  |  | +    #                 "scp", "-P", "5722", "-o", "StrictHostKeyChecking=no", "-r", f"{str(new_dir_path)}", f"root@172.104.93.163:{str(LOCAL_ZIP_STORAGE)}"])
 | 
	
		
			
				|  |  | +    res = celery_app.send_task("app.worker.super_resolution", args=[dirname, filenames])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    while True:
 | 
	
		
			
				|  |  | +       await asyncio.sleep(0.5)
 | 
	
		
			
				|  |  | +       if res.state == "SUCCESS":
 | 
	
		
			
				|  |  | +           break
 | 
	
		
			
				|  |  | +    restored_imgs = "restored_imgs"
 | 
	
		
			
				|  |  | +    process = await asyncio.create_subprocess_exec("sshpass", "-p", "choozmo9", 
 | 
	
		
			
				|  |  | +                     "scp", "-P", "5722", "-o", "StrictHostKeyChecking=no", "-r", f"root@172.104.93.163:{str(LOCAL_ZIP_STORAGE/dirname/restored_imgs)}/*", f"{str(BACKEND_ZIP_STORAGE)}")
 | 
	
		
			
				|  |  | +    await process.wait()
 | 
	
		
			
				|  |  |      for filename in filenames:
 | 
	
		
			
				|  |  | -      await asyncio.sleep(3)
 | 
	
		
			
				|  |  | -      await publish(filename)
 | 
	
		
			
				|  |  | +        await publish(filename)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +async def publish(data):
 | 
	
		
			
				|  |  | +    for sr_client in sr_clients.values():
 | 
	
		
			
				|  |  | +        await sr_client.send_text(f"{data}")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @router.get("/sr")
 | 
	
		
			
				|  |  |  def get_image(
 | 
	
	
		
			
				|  | @@ -77,9 +94,17 @@ def get_image(
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      Download image
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  | -    filename = Path(file_name)
 | 
	
		
			
				|  |  | -    response_filename = filename.stem + "_hr.png"
 | 
	
		
			
				|  |  | -    return FileResponse(path="test_medias/superman_resolution.png", media_type='image/png', filename=response_filename)
 | 
	
		
			
				|  |  | +    return_files = list(BACKEND_ZIP_STORAGE.glob(stored_file_name))
 | 
	
		
			
				|  |  | +    if return_files:
 | 
	
		
			
				|  |  | +        return_file = return_files[0]
 | 
	
		
			
				|  |  | +        return FileResponse(path=str(return_file), filename=file_name+"_hr"+return_file.suffix)
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        print("non")
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@router.delete("/sr")
 | 
	
		
			
				|  |  | +def del_image():
 | 
	
		
			
				|  |  | +    pass
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  sr_clients = {}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -93,15 +118,10 @@ async def websocket_endpoint(websocket: WebSocket):
 | 
	
		
			
				|  |  |              data = await websocket.receive_text()
 | 
	
		
			
				|  |  |              if not data.startswith("subscribe"):
 | 
	
		
			
				|  |  |                del sr_clients[key]
 | 
	
		
			
				|  |  | -              return 
 | 
	
		
			
				|  |  |                #for client in sr_clients.values():
 | 
	
		
			
				|  |  |                #      await client.send_text(f"ID: {key} | Message: {data}")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      except:
 | 
	
		
			
				|  |  | -        #await websocket.close()
 | 
	
		
			
				|  |  |          # 接続が切れた場合、当該クライアントを削除する
 | 
	
		
			
				|  |  |          del sr_clients[key]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -async def publish(data):
 | 
	
		
			
				|  |  | -    for sr_client in sr_clients.values():
 | 
	
		
			
				|  |  | -        await sr_client.send_text(f"{data}")
 |