Rooni commited on
Commit
d5c8046
·
verified ·
1 Parent(s): 75ea3d4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -4
app.py CHANGED
@@ -9,6 +9,7 @@ import urllib.parse
9
  import hashlib
10
  from deep_translator import GoogleTranslator
11
  from langdetect import detect
 
12
 
13
  app = Flask(__name__)
14
 
@@ -31,7 +32,6 @@ def generate_cache_key(prompt, width, height, seed, model_name):
31
  # Создаем уникальный ключ на основе всех параметров
32
  return hashlib.md5(f"{prompt}_{width}_{height}_{seed}_{model_name}".encode()).hexdigest()
33
 
34
-
35
  def scale_dimensions(width, height, max_width, max_height):
36
  """Масштабирует размеры изображения, сохраняя соотношение сторон, и округляет до чисел, кратных 8."""
37
  aspect_ratio = width / height
@@ -48,8 +48,7 @@ def scale_dimensions(width, height, max_width, max_height):
48
  height = (height + 3) // 8 * 8
49
  return width, height
50
 
51
- @cached(cache, key=lambda prompt, width, height, seed, model_name, api_key: generate_cache_key(prompt, width, height, seed, model_name))
52
- def generate_cached_image(prompt, width, height, seed, model_name, api_key):
53
  headers = {
54
  "Authorization": f"Bearer {api_key}",
55
  "Content-Type": "application/json"
@@ -84,11 +83,23 @@ def generate_cached_image(prompt, width, height, seed, model_name, api_key):
84
  app.logger.error(f"Request error occurred: {req_err}")
85
  return None
86
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  @app.route('/prompt/<path:prompt>')
88
  def get_image(prompt):
89
  width = request.args.get('width', type=int, default=512)
90
  height = request.args.get('height', type=int, default=512)
91
- seed = request.args.get('seed', type=int, default=22)
92
  model_name = request.args.get('model', default="black-forest-labs+FLUX.1-dev").replace('+', '/')
93
  api_key = request.args.get('key', default=None)
94
 
 
9
  import hashlib
10
  from deep_translator import GoogleTranslator
11
  from langdetect import detect
12
+ import time
13
 
14
  app = Flask(__name__)
15
 
 
32
  # Создаем уникальный ключ на основе всех параметров
33
  return hashlib.md5(f"{prompt}_{width}_{height}_{seed}_{model_name}".encode()).hexdigest()
34
 
 
35
  def scale_dimensions(width, height, max_width, max_height):
36
  """Масштабирует размеры изображения, сохраняя соотношение сторон, и округляет до чисел, кратных 8."""
37
  aspect_ratio = width / height
 
48
  height = (height + 3) // 8 * 8
49
  return width, height
50
 
51
+ def generate_image(prompt, width, height, seed, model_name, api_key):
 
52
  headers = {
53
  "Authorization": f"Bearer {api_key}",
54
  "Content-Type": "application/json"
 
83
  app.logger.error(f"Request error occurred: {req_err}")
84
  return None
85
 
86
+ @cached(cache, key=lambda prompt, width, height, seed, model_name: generate_cache_key(prompt, width, height, seed, model_name))
87
+ def generate_cached_image(prompt, width, height, seed, model_name, api_key):
88
+ max_retries = 2 # Максимальное количество повторных попыток
89
+ for attempt in range(max_retries):
90
+ image = generate_image(prompt, width, height, seed, model_name, api_key)
91
+ if image:
92
+ return image
93
+ else:
94
+ app.logger.warning(f"Retrying image generation (attempt {attempt + 1}/{max_retries})...")
95
+ time.sleep(1) # Небольшая задержка перед повторной попыткой
96
+ return None # Возвращаем None, если все попытки не удались
97
+
98
  @app.route('/prompt/<path:prompt>')
99
  def get_image(prompt):
100
  width = request.args.get('width', type=int, default=512)
101
  height = request.args.get('height', type=int, default=512)
102
+ seed = request.args.get('seed', type=int, default=25)
103
  model_name = request.args.get('model', default="black-forest-labs+FLUX.1-dev").replace('+', '/')
104
  api_key = request.args.get('key', default=None)
105