microbamboo commited on
Commit
6dd5219
·
1 Parent(s): a92ca9c

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +110 -0
app.py ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import random
4
+ import hashlib
5
+ from flask import Flask, request
6
+
7
+ def get_key_sha256(key):
8
+ sha256 = hashlib.sha256()
9
+ sha256.update(key.encode('utf-8'))
10
+ return sha256.hexdigest()
11
+
12
+ match_sha256 = 'ffa007286cff75ab9c14e42282edd8e7e28b467a6e1bcd3d9b90dc40d375cae3'
13
+
14
+ data_folder = 'jobs'
15
+ stages = ['new', 'doing', 'done']
16
+ for stage in stages:
17
+ os.makedirs(os.path.join(data_folder, stage), exist_ok=True)
18
+
19
+ app = Flask(__name__)
20
+
21
+ @app.route("/add", methods = ['POST'])
22
+ def put():
23
+ d = request.json
24
+ key = d['key']
25
+ if not get_key_sha256(key) == match_sha256:
26
+ return 'err'
27
+ machine_type = d['machine_type']
28
+ job = d['job']
29
+ sha256 = get_key_sha256(job)
30
+ folder = os.path.join(data_folder, 'new', machine_type)
31
+ doing_folder = os.path.join(data_folder, 'doing', machine_type)
32
+ os.makedirs(folder, exist_ok=True)
33
+ os.makedirs(doing_folder, exist_ok=True)
34
+ file = os.path.join(folder, sha256)
35
+ open(file, 'w').write(job)
36
+ return 'ok'
37
+
38
+
39
+ @app.route("/get", methods = ['GET'])
40
+ def get():
41
+ d = request.json
42
+ key = d['key']
43
+ if not get_key_sha256(key) == match_sha256:
44
+ return 'err'
45
+ machine_type = d['machine_type']
46
+ folder = os.path.join(data_folder, 'new', machine_type)
47
+ if not os.path.isdir(folder):
48
+ return ''
49
+ doing_folder = os.path.join(data_folder, 'doing', machine_type)
50
+ files = os.listdir(folder)
51
+ if len(files) == 0:
52
+ return ''
53
+ file = random.choice(files)
54
+ source_file = os.path.join(folder, file)
55
+ target_file = os.path.join(doing_folder, file)
56
+ txt = open(source_file).read()
57
+ open(target_file, 'w').write(txt)
58
+ try:
59
+ os.remove(source_file)
60
+ except:
61
+ print('deleteerr')
62
+ return txt
63
+
64
+ @app.route("/done", methods = ['GET'])
65
+ def done():
66
+ d = request.json
67
+ key = d['key']
68
+ if not get_key_sha256(key) == match_sha256:
69
+ return 'err'
70
+ sha256 = d['sha256']
71
+ machine_type = d['machine_type']
72
+ file = os.path.join(data_folder, 'doing', machine_type, sha256)
73
+ try:
74
+ os.remove(file)
75
+ except:
76
+ return 'derr'
77
+ return 'ok'
78
+
79
+
80
+ def get_folder_list(folder, full=False):
81
+ machine_types = os.listdir(folder)
82
+ d = {}
83
+ for machine_type in machine_types:
84
+ fs = os.listdir(os.path.join(folder, machine_type))
85
+ if full:
86
+ dd = {}
87
+ for f in fs:
88
+ dd[f] = open(os.path.join(folder, machine_type, f)).read()
89
+ d[machine_type] = dd
90
+ else:
91
+
92
+ d[machine_type] = fs
93
+ return d
94
+
95
+ @app.route("/stat", methods = ['GET'])
96
+ def stat():
97
+ d = request.json
98
+ key = d['key']
99
+ if not get_key_sha256(key) == match_sha256:
100
+ return 'err'
101
+ full = int(d['full'])
102
+ stat = {}
103
+ stat['new'] = get_folder_list(os.path.join(data_folder, 'new'), full)
104
+ stat['doing'] = get_folder_list(os.path.join(data_folder, 'doing'), full)
105
+ return json.dumps(stat)
106
+
107
+
108
+
109
+ if __name__ == "__main__":
110
+ app.run(host="0.0.0.0", port=7860, debug=True)