Spaces:
Runtime error
Runtime error
add multithreading
Browse files
app.py
CHANGED
|
@@ -14,17 +14,18 @@ from huggingface_hub import login
|
|
| 14 |
from diffusers import FluxPipeline
|
| 15 |
from aura_sr import AuraSR
|
| 16 |
from deep_translator import GoogleTranslator
|
| 17 |
-
from fastapi import FastAPI, Response, Request
|
| 18 |
import uvicorn
|
| 19 |
from pydantic import BaseModel
|
| 20 |
|
| 21 |
def log(*args, **kwargs):
|
|
|
|
| 22 |
tz = pytz.timezone(kwargs.pop('timezone', 'Europe/Moscow'))
|
| 23 |
time_fmt = kwargs.pop('time_format', '%Y-%m-%d %H:%M:%S')
|
| 24 |
separator = kwargs.pop('sep', ' - ')
|
| 25 |
moscow_time = datetime.now(tz).strftime(time_fmt)
|
| 26 |
message = separator.join(str(arg) for arg in args)
|
| 27 |
-
print(f"[{moscow_time}]{separator}{message}", **kwargs)
|
| 28 |
|
| 29 |
log("Старт сервиса")
|
| 30 |
|
|
@@ -190,16 +191,22 @@ class GenerateRequest(BaseModel):
|
|
| 190 |
|
| 191 |
@fastapi_app.post("/api/generate_image")
|
| 192 |
async def api_generate_image(rq: GenerateRequest, rest_request: Request):
|
| 193 |
-
thread_id = threading.get_ident()
|
| 194 |
client_ip = rest_request.headers.get('X-Forwarded-For', rest_request.client.host)
|
| 195 |
-
log(
|
| 196 |
-
log(f"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 197 |
image = await generate_image_async(rq.object_name, rq.remove_bg, rq.upscale)
|
| 198 |
-
log(f"
|
| 199 |
img_byte_arr = io.BytesIO()
|
| 200 |
image.save(img_byte_arr, format='WEBP')
|
| 201 |
img_byte_arr = img_byte_arr.getvalue()
|
| 202 |
-
log(f"
|
| 203 |
return Response(content=img_byte_arr, media_type="image/webp")
|
| 204 |
|
| 205 |
|
|
|
|
| 14 |
from diffusers import FluxPipeline
|
| 15 |
from aura_sr import AuraSR
|
| 16 |
from deep_translator import GoogleTranslator
|
| 17 |
+
from fastapi import FastAPI, Response, Request, HTTPException, status
|
| 18 |
import uvicorn
|
| 19 |
from pydantic import BaseModel
|
| 20 |
|
| 21 |
def log(*args, **kwargs):
|
| 22 |
+
tid = threading.get_ident()
|
| 23 |
tz = pytz.timezone(kwargs.pop('timezone', 'Europe/Moscow'))
|
| 24 |
time_fmt = kwargs.pop('time_format', '%Y-%m-%d %H:%M:%S')
|
| 25 |
separator = kwargs.pop('sep', ' - ')
|
| 26 |
moscow_time = datetime.now(tz).strftime(time_fmt)
|
| 27 |
message = separator.join(str(arg) for arg in args)
|
| 28 |
+
print(f"[{moscow_time}]{separator}[tid={tid}]{separator}{message}", **kwargs)
|
| 29 |
|
| 30 |
log("Старт сервиса")
|
| 31 |
|
|
|
|
| 191 |
|
| 192 |
@fastapi_app.post("/api/generate_image")
|
| 193 |
async def api_generate_image(rq: GenerateRequest, rest_request: Request):
|
|
|
|
| 194 |
client_ip = rest_request.headers.get('X-Forwarded-For', rest_request.client.host)
|
| 195 |
+
log("Получили запрос через рест АПИ.")
|
| 196 |
+
log(f"Client IP: {client_ip}")
|
| 197 |
+
rq_token = rest_request.headers.get('Authorization')
|
| 198 |
+
if not rq_token:
|
| 199 |
+
raise HTTPException(
|
| 200 |
+
status_code=status.HTTP_401_UNAUTHORIZED,
|
| 201 |
+
detail="Not authorized"
|
| 202 |
+
)
|
| 203 |
+
login(token = rq_token)
|
| 204 |
image = await generate_image_async(rq.object_name, rq.remove_bg, rq.upscale)
|
| 205 |
+
log(f"Подготовка ответа для рест АПИ.")
|
| 206 |
img_byte_arr = io.BytesIO()
|
| 207 |
image.save(img_byte_arr, format='WEBP')
|
| 208 |
img_byte_arr = img_byte_arr.getvalue()
|
| 209 |
+
log(f"Возвращаем ответ для рест АПИ.")
|
| 210 |
return Response(content=img_byte_arr, media_type="image/webp")
|
| 211 |
|
| 212 |
|