File size: 2,238 Bytes
01d1dd6
c2f1466
722ab73
c2f1466
 
 
cf7a07e
5aca742
b0d9242
 
 
7192ffe
da9b438
f718849
c2f1466
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5aca742
 
628eb7c
 
4d210d2
 
 
 
 
 
e3904de
4d210d2
 
 
 
 
 
 
 
 
 
628eb7c
4d210d2
 
e3904de
34fbca7
628eb7c
 
4d210d2
628eb7c
 
 
 
5aca742
0e70681
f718849
5aca742
0e70681
628eb7c
 
c2f1466
5be15aa
d79f686
5be15aa
36a4af1
628eb7c
5be15aa
6872135
1979413
d32111b
e05f064
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
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, queue
import math
import time
import datetime

loop = asyncio.get_event_loop()
gradio_client = GrClient(os.environ.get('GrClient_url'), serialize=False)
# 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


q = queue.Queue()

def chat():
    while True:
        time.sleep(1)
        global q
        if not q.empty():
            arr = q.get()
            start = time.time()
            print("응닡 μ‹œμž‘\nx:"+ arr[0] +"\nid:"+ arr[1] +"\ncdata:" + arr[2] + "\ncollback_url : " + arr[3])
            result = gradio_client.predict(
                arr[0],
                # str representing input in 'User input' Textbox component
                arr[1],
                arr[2],
        		fn_index=0
            )
            
            end = time.time()
        
        
            sec = (end - start)
            result_list = str(datetime.timedelta(seconds=sec)).split(".")
            print("응닡 μ‹œκ°„ : " + result_list[0] +"\nresult:"+ result)
            

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

# App code
def res(x, id, cdata, url):    
    global q

    arr = [x, id, str(cdata.replace(",",", ")), url]
    q.put(arr)

    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)