xyplon
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -1,45 +1,59 @@
|
|
1 |
from flask import Flask, render_template,request,jsonify,Response
|
|
|
2 |
import os
|
|
|
|
|
|
|
3 |
import json
|
|
|
4 |
from flask_cors import CORS
|
5 |
import time
|
6 |
from flask_limiter import Limiter
|
7 |
from flask_limiter.util import get_remote_address
|
8 |
-
|
|
|
|
|
|
|
|
|
9 |
app = Flask(__name__)
|
|
|
10 |
CORS(app)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
-
def get_client_ip():
|
13 |
-
return request.headers.get(os.getenv('head'), get_remote_address())
|
14 |
|
15 |
limiter = Limiter(
|
16 |
-
key_func=
|
17 |
-
|
18 |
-
default_limits=["6 per minute"]
|
19 |
)
|
|
|
|
|
20 |
|
21 |
|
22 |
-
users = 0
|
23 |
-
userslist = []
|
24 |
|
25 |
@app.route("/")
|
26 |
def index():
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
|
34 |
-
|
35 |
-
@app.route("/users")
|
36 |
-
def users():
|
37 |
-
return {"total users : " : users}
|
38 |
|
39 |
@limiter.limit("6 per minute")
|
40 |
@app.route('/gen', methods=['POST'])
|
41 |
def Hf():
|
42 |
|
|
|
|
|
|
|
43 |
prompt = request.json.get('prompt', '')
|
44 |
negative = request.json.get('negative', '')
|
45 |
steps = request.json.get('steps', 20)
|
@@ -48,28 +62,116 @@ def Hf():
|
|
48 |
scale = request.json.get('scale',7)
|
49 |
model = request.json.get('model','sd3')
|
50 |
style = request.json.get('style', 'Cinematic')
|
51 |
-
shash = request.json.get('hash'
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
|
74 |
-
if __name__ ==
|
75 |
-
|
|
|
|
1 |
from flask import Flask, render_template,request,jsonify,Response
|
2 |
+
import sys
|
3 |
import os
|
4 |
+
import warnings
|
5 |
+
import logging
|
6 |
+
import urllib3
|
7 |
import json
|
8 |
+
import requests
|
9 |
from flask_cors import CORS
|
10 |
import time
|
11 |
from flask_limiter import Limiter
|
12 |
from flask_limiter.util import get_remote_address
|
13 |
+
|
14 |
+
from hf import *
|
15 |
+
|
16 |
+
|
17 |
+
|
18 |
app = Flask(__name__)
|
19 |
+
|
20 |
CORS(app)
|
21 |
+
import logging
|
22 |
+
|
23 |
+
|
24 |
+
|
25 |
+
|
26 |
+
|
27 |
+
total = 0
|
28 |
+
pending = 0
|
29 |
|
|
|
|
|
30 |
|
31 |
limiter = Limiter(
|
32 |
+
key_func=get_remote_address,
|
33 |
+
default_limits=["8 per minute"]
|
|
|
34 |
)
|
35 |
+
limiter.init_app(app)
|
36 |
+
|
37 |
|
38 |
|
|
|
|
|
39 |
|
40 |
@app.route("/")
|
41 |
def index():
|
42 |
+
message = {'Total Requests: ': total, 'Pending Requests: ': pending}
|
43 |
+
return jsonify(message)
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
|
48 |
|
|
|
|
|
|
|
|
|
49 |
|
50 |
@limiter.limit("6 per minute")
|
51 |
@app.route('/gen', methods=['POST'])
|
52 |
def Hf():
|
53 |
|
54 |
+
global total, pending
|
55 |
+
total += 1
|
56 |
+
pending += 1
|
57 |
prompt = request.json.get('prompt', '')
|
58 |
negative = request.json.get('negative', '')
|
59 |
steps = request.json.get('steps', 20)
|
|
|
62 |
scale = request.json.get('scale',7)
|
63 |
model = request.json.get('model','sd3')
|
64 |
style = request.json.get('style', 'Cinematic')
|
65 |
+
shash = request.json.get('hash')
|
66 |
+
if model == 'rvs4':
|
67 |
+
def generator():
|
68 |
+
global pending
|
69 |
+
while True:
|
70 |
+
try:
|
71 |
+
for info in rvx(prompt=prompt, negative=negative, width=width, height=height, scale=scale, steps=steps, style=style, shash=shash):
|
72 |
+
if "error" in json.dumps(info):
|
73 |
+
|
74 |
+
raise ValueError("Error in response, retrying...")
|
75 |
+
else:
|
76 |
+
yield f'data: {json.dumps(info)}\n\n'
|
77 |
+
pending -= 1
|
78 |
+
break
|
79 |
+
except ValueError as e:
|
80 |
+
continue
|
81 |
+
return Response(generator(), mimetype="text/event-stream")
|
82 |
+
|
83 |
+
|
84 |
+
|
85 |
+
elif model == 'mobius':
|
86 |
+
def generator():
|
87 |
+
global pending
|
88 |
+
while True:
|
89 |
+
try:
|
90 |
+
for info in mobius(prompt=prompt, negative=negative, width=width, height=height, scale=scale, steps=steps, style=style, shash=shash):
|
91 |
+
if "error" in json.dumps(info):
|
92 |
+
raise ValueError("Error in response, retrying...")
|
93 |
+
else:
|
94 |
+
yield f'data: {json.dumps(info)}\n\n'
|
95 |
+
pending -= 1
|
96 |
+
break
|
97 |
+
except ValueError as e:
|
98 |
+
continue
|
99 |
+
return Response(generator(), mimetype="text/event-stream")
|
100 |
+
|
101 |
+
elif model == 'sd3':
|
102 |
+
def generator():
|
103 |
+
global pending
|
104 |
+
while True:
|
105 |
+
try:
|
106 |
+
for info in sd3(prompt=prompt, negative=negative, width=width, height=height, scale=scale, steps=steps, style=style, shash=shash):
|
107 |
+
if "error" in json.dumps(info):
|
108 |
+
raise ValueError("Error in response, retrying...")
|
109 |
+
else:
|
110 |
+
yield f'data: {json.dumps(info)}\n\n'
|
111 |
+
pending -= 1
|
112 |
+
break
|
113 |
+
except ValueError as e:
|
114 |
+
continue
|
115 |
+
return Response(generator(), mimetype="text/event-stream")
|
116 |
|
117 |
+
|
118 |
+
elif model == 'sdflash':
|
119 |
+
def generator():
|
120 |
+
global pending
|
121 |
+
while True:
|
122 |
+
try:
|
123 |
+
for info in sdflash(prompt=prompt, negative=negative, width=width, height=height, scale=scale, steps=steps, style=style, shash=shash):
|
124 |
+
if "error" in json.dumps(info):
|
125 |
+
raise ValueError("Error in response, retrying...")
|
126 |
+
else:
|
127 |
+
yield f'data: {json.dumps(info)}\n\n'
|
128 |
+
pending -= 1
|
129 |
+
break
|
130 |
+
except ValueError as e:
|
131 |
+
continue
|
132 |
+
return Response(generator(), mimetype="text/event-stream")
|
133 |
+
|
134 |
+
|
135 |
+
elif model == 'kivotos':
|
136 |
+
def generator():
|
137 |
+
global pending
|
138 |
+
while True:
|
139 |
+
try:
|
140 |
+
for info in kivotos(prompt=prompt, negative=negative, width=width, height=height, scale=scale, steps=steps, style=style, shash=shash):
|
141 |
+
if "error" in json.dumps(info):
|
142 |
+
raise ValueError("Error in response, retrying...")
|
143 |
+
else:
|
144 |
+
yield f'data: {json.dumps(info)}\n\n'
|
145 |
+
pending -= 1
|
146 |
+
break
|
147 |
+
except ValueError as e:
|
148 |
+
continue
|
149 |
+
return Response(generator(), mimetype="text/event-stream")
|
150 |
+
|
151 |
+
elif model == 'OpenDalle':
|
152 |
+
def generator():
|
153 |
+
global pending
|
154 |
+
while True:
|
155 |
+
try:
|
156 |
+
for info in OpenDalle(prompt=prompt, negative=negative, width=width, height=height, scale=scale, steps=steps, style=style, shash=shash):
|
157 |
+
if "error" in json.dumps(info):
|
158 |
+
raise ValueError("Error in response, retrying...")
|
159 |
+
else:
|
160 |
+
yield f'data: {json.dumps(info)}\n\n'
|
161 |
+
pending -= 1
|
162 |
+
break
|
163 |
+
except ValueError as e:
|
164 |
+
continue
|
165 |
+
return Response(generator(), mimetype="text/event-stream")
|
166 |
+
|
167 |
+
else:
|
168 |
+
pending-=1
|
169 |
+
return jsonify('model not found'), 404
|
170 |
+
|
171 |
+
|
172 |
+
|
173 |
|
174 |
|
175 |
+
if __name__ == '__main__':
|
176 |
+
#socketio.start_background_task(background_task)
|
177 |
+
app.run(debug=False, host='0.0.0.0', port=7860)
|