Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -10,6 +10,10 @@ import hashlib
|
|
10 |
|
11 |
app = Flask(__name__)
|
12 |
|
|
|
|
|
|
|
|
|
13 |
# Кэш на 10 минут
|
14 |
cache = TTLCache(maxsize=100, ttl=600)
|
15 |
|
@@ -25,6 +29,18 @@ def generate_cache_key(prompt, width, height, seed, model_name):
|
|
25 |
# Создаем уникальный ключ на основе всех параметров
|
26 |
return hashlib.md5(f"{prompt}_{width}_{height}_{seed}_{model_name}".encode()).hexdigest()
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
@cached(cache)
|
29 |
def generate_cached_image(cache_key, prompt, width, height, seed, model_name):
|
30 |
api_key = get_random_key()
|
@@ -38,10 +54,7 @@ def generate_cached_image(cache_key, prompt, width, height, seed, model_name):
|
|
38 |
"width": width,
|
39 |
"height": height,
|
40 |
"seed": seed
|
41 |
-
}
|
42 |
-
"width": width,
|
43 |
-
"height": height,
|
44 |
-
"seed": seed,
|
45 |
}
|
46 |
|
47 |
try:
|
@@ -64,6 +77,9 @@ def get_image(prompt):
|
|
64 |
# Декодируем URL-кодированный prompt
|
65 |
prompt = urllib.parse.unquote(prompt)
|
66 |
|
|
|
|
|
|
|
67 |
# Генерируем уникальный ключ для кэша
|
68 |
cache_key = generate_cache_key(prompt, width, height, seed, model_name)
|
69 |
|
@@ -87,4 +103,4 @@ def health_check():
|
|
87 |
return "OK", 200
|
88 |
|
89 |
if __name__ == '__main__':
|
90 |
-
app.run(host='0.0.0.0', port=7860, debug=
|
|
|
10 |
|
11 |
app = Flask(__name__)
|
12 |
|
13 |
+
# Максимальные значения для ширины и высоты
|
14 |
+
MAX_WIDTH = 850
|
15 |
+
MAX_HEIGHT = 850
|
16 |
+
|
17 |
# Кэш на 10 минут
|
18 |
cache = TTLCache(maxsize=100, ttl=600)
|
19 |
|
|
|
29 |
# Создаем уникальный ключ на основе всех параметров
|
30 |
return hashlib.md5(f"{prompt}_{width}_{height}_{seed}_{model_name}".encode()).hexdigest()
|
31 |
|
32 |
+
def scale_dimensions(width, height, max_width, max_height):
|
33 |
+
"""Масштабирует размеры изображения, сохраняя соотношение сторон."""
|
34 |
+
aspect_ratio = width / height
|
35 |
+
if width > max_width or height > max_height:
|
36 |
+
if width / max_width > height / max_height:
|
37 |
+
width = max_width
|
38 |
+
height = int(width / aspect_ratio)
|
39 |
+
else:
|
40 |
+
height = max_height
|
41 |
+
width = int(height * aspect_ratio)
|
42 |
+
return width, height
|
43 |
+
|
44 |
@cached(cache)
|
45 |
def generate_cached_image(cache_key, prompt, width, height, seed, model_name):
|
46 |
api_key = get_random_key()
|
|
|
54 |
"width": width,
|
55 |
"height": height,
|
56 |
"seed": seed
|
57 |
+
}
|
|
|
|
|
|
|
58 |
}
|
59 |
|
60 |
try:
|
|
|
77 |
# Декодируем URL-кодированный prompt
|
78 |
prompt = urllib.parse.unquote(prompt)
|
79 |
|
80 |
+
# Масштабируем размеры изображения, если они превышают максимальные значения
|
81 |
+
width, height = scale_dimensions(width, height, MAX_WIDTH, MAX_HEIGHT)
|
82 |
+
|
83 |
# Генерируем уникальный ключ для кэша
|
84 |
cache_key = generate_cache_key(prompt, width, height, seed, model_name)
|
85 |
|
|
|
103 |
return "OK", 200
|
104 |
|
105 |
if __name__ == '__main__':
|
106 |
+
app.run(host='0.0.0.0', port=7860, debug=False)
|