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)
|