admin commited on
Commit
de43d1a
·
1 Parent(s): e8e1626
Files changed (2) hide show
  1. activate.py +42 -36
  2. app.py +31 -24
activate.py CHANGED
@@ -121,44 +121,50 @@ def activate_studio(repo: str, holding_delay=5):
121
 
122
 
123
  def trigger(users=USERS):
124
- spaces, studios, failures = [], [], []
125
- usernames = users.split(";")
126
- for user in tqdm(usernames, desc="Collecting spaces"):
127
- username = user.strip()
128
- if username:
129
- sleeps, errors = get_spaces(username)
130
- spaces += sleeps
131
- failures += errors
 
 
 
 
 
132
  time.sleep(DELAY)
133
 
134
- for space in tqdm(spaces, desc="Activating spaces"):
135
- activate_space(space)
136
- time.sleep(DELAY)
137
-
138
- for user in tqdm(usernames, desc="Collecting studios"):
139
- username = user.strip()
140
- if username:
141
- sleeps, errors = get_studios(username)
142
- studios += sleeps
143
- failures += errors
 
 
144
  time.sleep(DELAY)
145
 
146
- for studio in tqdm(studios, desc="Activating studios"):
147
- threading.Thread(target=activate_studio, args=(studio,), daemon=True).start()
148
- time.sleep(DELAY)
 
 
 
 
 
 
 
 
 
 
149
 
150
- log = (
151
- "\n".join(spaces + studios)
152
- + f"\n[{fix_datetime(datetime.now())}] Activation complete!"
153
- )
154
- print(log)
155
- content = ""
156
- for failure in failures:
157
- errepo: str = failure
158
- errepo = errepo.replace(HF_DOMAIN, "").replace(MS_DOMAIN, "")
159
- content += f"<br><a href='{failure}'>{errepo[1:]}</a><br>"
160
-
161
- if content:
162
- send_email(content)
163
-
164
- return log
 
121
 
122
 
123
  def trigger(users=USERS):
124
+ try:
125
+ spaces, studios, failures = [], [], []
126
+ usernames = users.split(";")
127
+ for user in tqdm(usernames, desc="Collecting spaces"):
128
+ username = user.strip()
129
+ if username:
130
+ sleeps, errors = get_spaces(username)
131
+ spaces += sleeps
132
+ failures += errors
133
+ time.sleep(DELAY)
134
+
135
+ for space in tqdm(spaces, desc="Activating spaces"):
136
+ activate_space(space)
137
  time.sleep(DELAY)
138
 
139
+ for user in tqdm(usernames, desc="Collecting studios"):
140
+ username = user.strip()
141
+ if username:
142
+ sleeps, errors = get_studios(username)
143
+ studios += sleeps
144
+ failures += errors
145
+ time.sleep(DELAY)
146
+
147
+ for studio in tqdm(studios, desc="Activating studios"):
148
+ threading.Thread(
149
+ target=activate_studio, args=(studio,), daemon=True
150
+ ).start()
151
  time.sleep(DELAY)
152
 
153
+ log = (
154
+ "\n".join(spaces + studios)
155
+ + f"\n[{fix_datetime(datetime.now())}] Activation complete!"
156
+ )
157
+ print(log)
158
+ content = ""
159
+ for failure in failures:
160
+ errepo: str = failure
161
+ errepo = errepo.replace(HF_DOMAIN, "").replace(MS_DOMAIN, "")
162
+ content += f"<br><a href='{failure}'>{errepo[1:]}</a><br>"
163
+
164
+ if content:
165
+ send_email(content)
166
 
167
+ return log
168
+
169
+ except Exception as e:
170
+ return f"{e}"
 
 
 
 
 
 
 
 
 
 
 
app.py CHANGED
@@ -25,36 +25,43 @@ def monitor(period=PERIOD):
25
 
26
 
27
  def tasklist():
28
- outputs = f"Has been running for {time_diff(START_TIME, datetime.now())}"
29
- jobs = schedule.get_jobs()
30
- for job in jobs:
31
- last_run = fix_datetime(job.last_run)
32
- if not last_run:
33
- last_run = "never"
 
34
 
35
- next_run = fix_datetime(job.next_run)
36
- outputs += f"\n\nEvery {job.interval}h do {job.job_func} (last run: {last_run}, next run: {next_run})"
37
 
38
- return outputs
 
 
 
39
 
40
 
41
  if __name__ == "__main__":
42
  monitor()
43
  with gr.Blocks() as demo:
44
- gr.Interface(
45
- title="See current task status",
46
- fn=tasklist,
47
- inputs=None,
48
- outputs=gr.TextArea(label="Current task details"),
49
- flagging_mode="never",
50
- )
51
-
52
- gr.Interface(
53
- title="Trigger once manually",
54
- fn=trigger,
55
- inputs=None,
56
- outputs=gr.TextArea(label="Activation logs"),
57
- flagging_mode="never",
58
- )
 
 
 
59
 
60
  demo.launch()
 
25
 
26
 
27
  def tasklist():
28
+ try:
29
+ outputs = f"Has been running for {time_diff(START_TIME, datetime.now())}"
30
+ jobs = schedule.get_jobs()
31
+ for job in jobs:
32
+ last_run = fix_datetime(job.last_run)
33
+ if not last_run:
34
+ last_run = "never"
35
 
36
+ next_run = fix_datetime(job.next_run)
37
+ outputs += f"\n\nEvery {job.interval}h do {job.job_func} (last run: {last_run}, next run: {next_run})"
38
 
39
+ return outputs
40
+
41
+ except Exception as e:
42
+ return f"{e}"
43
 
44
 
45
  if __name__ == "__main__":
46
  monitor()
47
  with gr.Blocks() as demo:
48
+ with gr.Row():
49
+ with gr.Column():
50
+ gr.Interface(
51
+ title="See current task status",
52
+ fn=tasklist,
53
+ inputs=None,
54
+ outputs=gr.TextArea(label="Current task details"),
55
+ flagging_mode="never",
56
+ )
57
+
58
+ with gr.Column():
59
+ gr.Interface(
60
+ title="Trigger once manually",
61
+ fn=trigger,
62
+ inputs=None,
63
+ outputs=gr.TextArea(label="Activation logs"),
64
+ flagging_mode="never",
65
+ )
66
 
67
  demo.launch()