xyplon commited on
Commit
53e2080
·
verified ·
1 Parent(s): 40ee929

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +142 -40
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
- import requests
 
 
 
 
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=get_client_ip,
17
- app=app,
18
- default_limits=["6 per minute"]
19
  )
 
 
20
 
21
 
22
- users = 0
23
- userslist = []
24
 
25
  @app.route("/")
26
  def index():
27
- global users
28
- global userslist
29
- if(request.remote_addr not in userslist):
30
- userslist.append(request.remote_addr)
31
- users = len(userslist)
32
- return render_template('models.html')
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', 'Cinematic')
52
- def Gen(prompt,negative,steps,width,height,scale,style,model):
53
- req = requests.post('https://xyplon-proxy.hf.space/hf/img/gen',headers={
54
- 'Authorization' : os.getenv('auth')
55
- },json={
56
- 'prompt': prompt,
57
- 'negative': negative,
58
- 'steps': steps,
59
- 'width': width,
60
- 'height': height,
61
- 'scale': scale,
62
- 'model' : model,
63
- 'style': style,
64
- 'hash': shash
65
- }, stream=True)
66
- if(req.status_code!=200):
67
- return "an error occurred! ", 500
68
- for chunk in req.iter_lines():
69
- yield f'{chunk.decode()}\n'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
- return Response(Gen(prompt=prompt,negative=negative,steps=steps,width=width,height=height,scale=scale,style=style,model=model), mimetype="text/event-stream")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
 
74
- if __name__ == "__main__":
75
- app.run(debug=True, host='0.0.0.0', port=7860)
 
 
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)