microbamboo commited on
Commit
0cb2545
·
1 Parent(s): f847691

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +57 -6
app.py CHANGED
@@ -1,7 +1,9 @@
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):
@@ -10,7 +12,7 @@ def get_key_sha256(key):
10
  return sha256.hexdigest()
11
 
12
  match_sha256 = 'ffa007286cff75ab9c14e42282edd8e7e28b467a6e1bcd3d9b90dc40d375cae3'
13
-
14
  data_folder = 'jobs'
15
  stages = ['new', 'doing', 'done']
16
  for stage in stages:
@@ -34,7 +36,8 @@ def put():
34
  os.makedirs(doing_folder, exist_ok=True)
35
  os.makedirs(done_folder, exist_ok=True)
36
  file = os.path.join(folder, sha256)
37
- open(file, 'w').write(job)
 
38
  return 'ok'
39
 
40
 
@@ -45,6 +48,7 @@ def get():
45
  if not get_key_sha256(key) == match_sha256:
46
  return 'err'
47
  machine_type = d['machine_type']
 
48
  folder = os.path.join(data_folder, 'new', machine_type)
49
  if not os.path.isdir(folder):
50
  return ''
@@ -56,12 +60,15 @@ def get():
56
  source_file = os.path.join(folder, file)
57
  target_file = os.path.join(doing_folder, file)
58
  txt = open(source_file).read()
59
- open(target_file, 'w').write(txt)
 
 
 
60
  try:
61
  os.remove(source_file)
62
  except:
63
  print('deleteerr')
64
- return json.dumps({'sha256': file, 'job': txt})
65
 
66
  @app.route("/done", methods = ['POST'])
67
  def done():
@@ -72,9 +79,19 @@ def done():
72
  sha256 = d['sha256']
73
  machine_type = d['machine_type']
74
  output = d['output']
75
- file = os.path.join(data_folder, 'doing', machine_type, sha256)
 
 
 
 
 
 
 
 
 
 
76
  try:
77
- os.remove(file)
78
  except:
79
  return 'derr'
80
  return 'ok'
@@ -104,8 +121,42 @@ def stat():
104
  stat = {}
105
  stat['new'] = get_folder_list(os.path.join(data_folder, 'new'), full)
106
  stat['doing'] = get_folder_list(os.path.join(data_folder, 'doing'), full)
 
107
  return json.dumps(stat)
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
110
 
111
  if __name__ == "__main__":
 
1
  import os
2
  import json
3
  import random
4
+ import shutil
5
  import hashlib
6
+ import datetime
7
  from flask import Flask, request
8
 
9
  def get_key_sha256(key):
 
12
  return sha256.hexdigest()
13
 
14
  match_sha256 = 'ffa007286cff75ab9c14e42282edd8e7e28b467a6e1bcd3d9b90dc40d375cae3'
15
+ match_sha256 = 'ffa007286cff75ab9c14e42282edd8e7e28b467a6e1bcd3d9b90dc40d375cae3'
16
  data_folder = 'jobs'
17
  stages = ['new', 'doing', 'done']
18
  for stage in stages:
 
36
  os.makedirs(doing_folder, exist_ok=True)
37
  os.makedirs(done_folder, exist_ok=True)
38
  file = os.path.join(folder, sha256)
39
+ job_json = {'creat_time': str(datetime.datetime.utcnow()), 'job': job, 'machine_type': machine_type}
40
+ open(file, 'w').write(json.dumps(job_json))
41
  return 'ok'
42
 
43
 
 
48
  if not get_key_sha256(key) == match_sha256:
49
  return 'err'
50
  machine_type = d['machine_type']
51
+ worker = d['worker']
52
  folder = os.path.join(data_folder, 'new', machine_type)
53
  if not os.path.isdir(folder):
54
  return ''
 
60
  source_file = os.path.join(folder, file)
61
  target_file = os.path.join(doing_folder, file)
62
  txt = open(source_file).read()
63
+ job_json = json.loads(txt)
64
+ job = job_json['job']
65
+ job_json['worker'] = worker
66
+ json.dump(job_json, open(target_file, 'w'))
67
  try:
68
  os.remove(source_file)
69
  except:
70
  print('deleteerr')
71
+ return json.dumps({'sha256': file, 'job': job, 'start_time': str(datetime.datetime.utcnow())})
72
 
73
  @app.route("/done", methods = ['POST'])
74
  def done():
 
79
  sha256 = d['sha256']
80
  machine_type = d['machine_type']
81
  output = d['output']
82
+ dt = d['dt']
83
+ #start_time = d['start_time'] # could be found in doing file
84
+ end_time = str(datetime.datetime.utcnow())
85
+ src = os.path.join(data_folder, 'doing', machine_type, sha256)
86
+ dst = os.path.join(data_folder, 'done', machine_type, sha256)
87
+ job_json = json.load(open(src))
88
+ job_json['dt'] = dt
89
+ job_json['end_time'] = end_time
90
+ dst_output = dst+'.output'
91
+ json.dump(job_json, open(dst, 'w'))
92
+ open(dst_output, 'w').write(output)
93
  try:
94
+ os.remove(src)
95
  except:
96
  return 'derr'
97
  return 'ok'
 
121
  stat = {}
122
  stat['new'] = get_folder_list(os.path.join(data_folder, 'new'), full)
123
  stat['doing'] = get_folder_list(os.path.join(data_folder, 'doing'), full)
124
+ stat['done'] = get_folder_list(os.path.join(data_folder, 'done'), full)
125
  return json.dumps(stat)
126
 
127
+ @app.route("/mv", methods = ['POST'])
128
+ def mv():
129
+ '''
130
+ move from doing to new
131
+ '''
132
+ d = request.json
133
+ key = d['key']
134
+ if not get_key_sha256(key) == match_sha256:
135
+ return 'err'
136
+ machine_type = d['machine_type']
137
+ sha256 = d['sha256']
138
+ src = os.path.join(data_folder, 'doing', machine_type, sha256)
139
+ dst = os.path.join(data_folder, 'new', machine_type, sha256)
140
+ os.system(f'mv {src} {dst}')
141
+ return 'ok'
142
+
143
+
144
+ @app.route("/clear", methods = ['POST'])
145
+ def clear():
146
+ '''
147
+ clear all of new, doing, or done
148
+ '''
149
+ d = request.json
150
+ key = d['key']
151
+ if not get_key_sha256(key) == match_sha256:
152
+ return 'err'
153
+ what = d['what']
154
+ folder = os.path.join(data_folder, what)
155
+ shutil.rmtree(folder)
156
+ os.makedirs(folder)
157
+ return 'ok'
158
+
159
+
160
 
161
 
162
  if __name__ == "__main__":