@@ -185,24 +185,51 @@ def index():
185
185
186
186
@app_instance .before_request
187
187
def before_request ():
188
- request .data = {"id" : str (time .time ())}
188
+ request .data = {"id" : utils .md5 (request .remote_addr + str (time .time ()))}
189
+ print (request .remote_addr )
189
190
pass
190
191
192
+ @app_instance .route ("/get/modules" , methods = ["GET" , "POST" ])
193
+ def get_modules_info ():
194
+ global nlp_module , cv_module
195
+ module_info = {}
196
+ if len (nlp_module ) > 0 :
197
+ module_info .update ({"nlp_module" : [{"Choose..." : "Choose..." }]})
198
+ for item in nlp_module :
199
+ module_info ["nlp_module" ].append ({item : item })
200
+ if len (cv_module ) > 0 :
201
+ module_info .update ({"cv_module" : [{"Choose..." : "Choose..." }]})
202
+ for item in cv_module :
203
+ module_info ["cv_module" ].append ({item : item })
204
+ module_info .update ({"Choose..." : [{"请先选择分类" : "Choose..." }]})
205
+ return {"module_info" : module_info }
206
+
191
207
@app_instance .route ("/predict/image/<module_name>" , methods = ["POST" ])
192
208
def predict_iamge (module_name ):
193
209
global results_dict
194
210
req_id = request .data .get ("id" )
195
- img_base64 = request .form .get ("input_img" , "" )
196
- received_file_name = request .form .get ("input_file" , "" )
197
- ext = received_file_name .split ("." )[- 1 ]
198
- if ext == "" :
199
- return {"result" : "Unrecognized file type" }
211
+
212
+ img_base64 = request .form .get ("image" , "" )
213
+ if img_base64 != "" :
214
+ img_base64 = request .form .get ("image" , "" )
215
+ ext = img_base64 .split (";" )[0 ].split ("/" )[- 1 ]
216
+ if ext not in ["jpeg" , "jpg" , "png" ]:
217
+ return {"result" : "Unrecognized file type" }
218
+ filename = utils .md5 (str (time .time ()) + str (img_base64 )) + "." + ext
219
+ base64_head = img_base64 .split (',' )[0 ]
220
+ img_data = base64 .b64decode (img_base64 .split (',' )[- 1 ])
221
+ with open (filename , "wb" ) as fp :
222
+ fp .write (img_data )
223
+ else :
224
+ file = request .files ["image" ]
225
+ filename = file .filename
226
+ ext = file .filename .split ("." )[- 1 ]
227
+ if ext not in ["jpeg" , "jpg" , "png" ]:
228
+ return {"result" : "Unrecognized file type" }
229
+ base64_head = "data:image/" + ext + ";base64"
230
+ filename = utils .md5 (filename ) + '.' + ext
231
+ file .save (filename )
200
232
score = time .time ()
201
- filename = utils .md5 (str (time .time ()) + str (img_base64 )) + "." + ext
202
- base64_head = img_base64 .split (',' )[0 ]
203
- img_data = base64 .b64decode (img_base64 .split (',' )[- 1 ])
204
- with open (filename , "wb" ) as fp :
205
- fp .write (img_data )
206
233
file_list = [filename ]
207
234
if queues_dict [module_name ].qsize (
208
235
) + 1 > queues_dict [module_name ].get_attribute ("maxsize" ):
@@ -211,9 +238,14 @@ def predict_iamge(module_name):
211
238
data_num = len (file_list )
212
239
results = []
213
240
result_len = 0
241
+ start_time = time .time ()
214
242
while result_len != data_num :
215
243
result_len = len (results_dict .get (req_id , []))
244
+ if time .time () - start_time > time_out :
245
+ results_dict .pop (req_id , None )
246
+ return {"result" : "Request time out." }
216
247
results = results_dict .get (req_id )
248
+ results_dict .pop (req_id , None )
217
249
results = [i [1 ] for i in sorted (results , key = lambda k : k [0 ])]
218
250
filename = results [0 ].get ("path" )
219
251
ext = filename .split ("." )[- 1 ]
@@ -225,7 +257,7 @@ def predict_iamge(module_name):
225
257
os .remove (filename )
226
258
os .remove (output_file )
227
259
results = {
228
- "border " :
260
+ "desc " :
229
261
str (results [0 ]["data" ]),
230
262
"output_img" :
231
263
base64_head + "," + str (output_img_base64 ).replace (
@@ -244,7 +276,7 @@ def data_2_item(data_list, req_id, score, module_name):
244
276
def predict_text (module_name ):
245
277
global results_dict , queues_dict
246
278
req_id = request .data .get ("id" )
247
- data_list = request .form .get ("input_text " )
279
+ data_list = request .form .get ("text " )
248
280
score = time .time ()
249
281
data_list = data_list .splitlines ()
250
282
data_temp = []
@@ -261,14 +293,17 @@ def predict_text(module_name):
261
293
if data_num + queues_dict [module_name ].qsize (
262
294
) > queues_dict [module_name ].get_attribute ("maxsize" ):
263
295
return {"result" : "Too many visitors now, please come back later." }
264
- start = time .time ()
265
-
266
296
data_2_item (data_list , req_id , score , module_name )
267
297
results = []
268
298
result_len = 0
299
+ start_time = time .time ()
269
300
while result_len != data_num :
270
301
result_len = len (results_dict .get (req_id , []))
302
+ if time .time () - start_time > time_out :
303
+ results_dict .pop (req_id , None )
304
+ return {"result" : "Request time out." }
271
305
results = results_dict .get (req_id )
306
+ results_dict .pop (req_id , None )
272
307
results = [i [1 ] for i in sorted (results , key = lambda k : k [0 ])]
273
308
return {"result" : results }
274
309
@@ -302,8 +337,9 @@ def config_with_file(configs):
302
337
queue_name_list .append (item ["module" ])
303
338
304
339
305
- def run (is_use_gpu = False , configs = None , port = 8888 ):
306
- global use_gpu
340
+ def run (is_use_gpu = False , configs = None , port = 8866 , timeout = 60 ):
341
+ global use_gpu , time_out
342
+ time_out = timeout
307
343
use_gpu = is_use_gpu
308
344
if configs is not None :
309
345
config_with_file (configs )
0 commit comments