File size: 2,203 Bytes
01d1dd6
c2f1466
722ab73
c2f1466
 
 
cf7a07e
b0d9242
 
 
 
7192ffe
da9b438
c51b20d
c2f1466
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
628eb7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0e70681
628eb7c
 
 
 
9292eb5
628eb7c
 
 
 
 
 
 
 
 
 
 
 
 
0e70681
628eb7c
 
 
 
 
0e70681
628eb7c
 
c2f1466
5be15aa
d79f686
5be15aa
36a4af1
628eb7c
5be15aa
6872135
1979413
d32111b
8bd8f14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from threading import Thread
import gradio as gr
from gradio_client import Client as GrClient
import inspect
from gradio import routes
from typing import List, Type

import requests, os, re, asyncio
import math
import time
import datetime

loop = asyncio.get_event_loop()
gradio_client = GrClient(os.environ.get('GrClient_url'))
# Monkey patch
def get_types(cls_set: List[Type], component: str):
    docset = []
    types = []
    if component == "input":
        for cls in cls_set:
            doc = inspect.getdoc(cls)
            doc_lines = doc.split("\n")
            docset.append(doc_lines[1].split(":")[-1])
            types.append(doc_lines[1].split(")")[0].split("(")[-1])
    else:
        for cls in cls_set:
            doc = inspect.getdoc(cls)
            doc_lines = doc.split("\n")
            docset.append(doc_lines[-1].split(":")[-1])
            types.append(doc_lines[-1].split(")")[0].split("(")[-1])
    return docset, types
routes.get_types = get_types

_x = ""
_id = ""
_cdata = ""
_url = ""
_do = False

def chat():
    global _do
    global _x
    global _id
    global _cdata
    if _do:
        start = time.time()
        result = gradio_client.predict(
            _x,
            # str representing input in 'User input' Textbox component
            _id,
            _cdata,
    		fn_index=0
        )
        result = str(result)
        
        end = time.time()
    
    
        sec = (end - start)
        result_list = str(datetime.timedelta(seconds=sec)).split(".")
        print("응답 시간 : " + result_list[0] +"\nx:"+ x +"\nid:"+ id +"\ncdata:" + cdata +"\nresult:"+ result)
        _do = False
        return result

th_a = Thread(target = chat)
th_a.daemon = True
th_a.start()

# App code
def res(x, id, cdata, url):    
    global _do
    global _x
    global _id
    global _cdata
    global _url

    _x = x
    _id = id
    _cdata = cdata
    _url = url
    _do = True

    print("\n_Done\n\n")
    return "Done"

with gr.Blocks() as demo:
    count = 0
    aa = gr.Interface(
      fn=res,
      inputs=["text","text", "text", "text"],
      outputs="text",
      description="chat",
    )

    demo.queue(max_size=32).launch(enable_queue=True)