admin commited on
Commit
b50dddd
·
1 Parent(s): f2e0a8c
Files changed (5) hide show
  1. app.py +29 -38
  2. modules/activate.py +9 -6
  3. modules/restart.py +6 -5
  4. modules/smtp.py +4 -1
  5. utils.py +5 -5
app.py CHANGED
@@ -26,9 +26,12 @@ def monitor(period=PERIOD):
26
  threading.Thread(target=run_schedule, daemon=True).start()
27
 
28
 
 
29
  def tasklst():
 
 
30
  try:
31
- outputs = f"Has been running for {time_diff(START_TIME, datetime.now())}"
32
  jobs = schedule.get_jobs()
33
  for job in jobs:
34
  last_run = fix_datetime(job.last_run)
@@ -36,53 +39,41 @@ def tasklst():
36
  last_run = "never"
37
 
38
  next_run = fix_datetime(job.next_run)
39
- outputs += f"\n\nEvery {job.interval}h do {job.job_func} (last run: {last_run}, next run: {next_run})"
40
-
41
- return outputs
42
 
43
  except Exception as e:
44
- return f"{e}"
 
 
45
 
46
 
47
  if __name__ == "__main__":
48
  monitor()
49
  with gr.Blocks() as demo:
50
- with gr.Tab("See current task status"):
51
- gr.Interface(
52
- fn=tasklst,
53
- inputs=None,
54
- outputs=gr.TextArea(
55
- label="Current task details",
56
- show_copy_button=True,
57
- ),
58
- flagging_mode="never",
59
- )
 
60
 
61
- with gr.Tab("Trigger once manually"):
62
- gr.Interface(
63
- fn=trigger,
64
- inputs=None,
65
- outputs=gr.TextArea(label="Activation logs", show_copy_button=True),
66
- flagging_mode="never",
67
- )
68
 
69
- with gr.Tab("Cookie test"):
70
- gr.Interface(
 
 
71
  fn=test_restart,
72
- inputs=gr.Textbox(label="Restart a gradio space with permissions"),
73
- outputs=[
74
- gr.Textbox(label="Status", show_copy_button=True),
75
- gr.Markdown(),
76
- ],
77
- flagging_mode="never",
78
- )
79
-
80
- with gr.Tab("SMTP test"):
81
- gr.Interface(
82
- fn=send_email,
83
- inputs=None,
84
- outputs=gr.Textbox(label="Status", show_copy_button=True),
85
- flagging_mode="never",
86
  )
87
 
88
  demo.launch()
 
26
  threading.Thread(target=run_schedule, daemon=True).start()
27
 
28
 
29
+ # UI func
30
  def tasklst():
31
+ status = "Success"
32
+ logs = None
33
  try:
34
+ logs = f"\nHas been running for {time_diff(START_TIME, datetime.now())}\n"
35
  jobs = schedule.get_jobs()
36
  for job in jobs:
37
  last_run = fix_datetime(job.last_run)
 
39
  last_run = "never"
40
 
41
  next_run = fix_datetime(job.next_run)
42
+ logs += f"\nEvery {job.interval}h do {job.job_func.__name__} (last run: {last_run}, next run: {next_run})\n"
 
 
43
 
44
  except Exception as e:
45
+ status = f"{e}"
46
+
47
+ return status, logs
48
 
49
 
50
  if __name__ == "__main__":
51
  monitor()
52
  with gr.Blocks() as demo:
53
+ gr.Markdown("# Keep Spaces Alive")
54
+ with gr.Row():
55
+ with gr.Column():
56
+ task_btn = gr.Button("See current task status")
57
+ once_btn = gr.Button("Trigger once manually")
58
+ smtp_btn = gr.Button("SMTP test")
59
+ re_txt = gr.Textbox(
60
+ label="Restart a gradio space with permissions",
61
+ placeholder="username/repo",
62
+ )
63
+ re_btn = gr.Button("Restart")
64
 
65
+ with gr.Column():
66
+ status_bar = gr.Textbox(label="Status", show_copy_button=True)
67
+ gr.Markdown("Logs")
68
+ logs_bar = gr.Markdown(container=True, show_copy_button=True)
 
 
 
69
 
70
+ task_btn.click(fn=tasklst, outputs=[status_bar, logs_bar])
71
+ once_btn.click(fn=trigger, outputs=[status_bar, logs_bar])
72
+ smtp_btn.click(fn=send_email, outputs=[status_bar, logs_bar])
73
+ re_btn.click(
74
  fn=test_restart,
75
+ inputs=[re_txt],
76
+ outputs=[status_bar, logs_bar],
 
 
 
 
 
 
 
 
 
 
 
 
77
  )
78
 
79
  demo.launch()
modules/activate.py CHANGED
@@ -123,7 +123,10 @@ def activate_studio(repo: str, holding_delay=5):
123
  print(e)
124
 
125
 
 
126
  def trigger(users=USERS):
 
 
127
  try:
128
  spaces, studios, failures = [], [], []
129
  usernames = users.split(";")
@@ -153,11 +156,11 @@ def trigger(users=USERS):
153
  ).start()
154
  time.sleep(DELAY)
155
 
156
- log = (
157
  "\n".join(spaces + studios)
158
- + f"\n[{fix_datetime(datetime.now())}] Activation complete!"
159
  )
160
- print(log)
161
  content = ""
162
  for failure in failures:
163
  errepo: str = failure
@@ -167,7 +170,7 @@ def trigger(users=USERS):
167
  if content:
168
  send_email(content)
169
 
170
- return log
171
-
172
  except Exception as e:
173
- return f"{e}"
 
 
 
123
  print(e)
124
 
125
 
126
+ # UI func
127
  def trigger(users=USERS):
128
+ status = "Success"
129
+ logs = None
130
  try:
131
  spaces, studios, failures = [], [], []
132
  usernames = users.split(";")
 
156
  ).start()
157
  time.sleep(DELAY)
158
 
159
+ logs = (
160
  "\n".join(spaces + studios)
161
+ + f"\n[{fix_datetime(datetime.now())}] Activation complete!\n"
162
  )
163
+ print(logs)
164
  content = ""
165
  for failure in failures:
166
  errepo: str = failure
 
170
  if content:
171
  send_email(content)
172
 
 
 
173
  except Exception as e:
174
+ status = f"{e}"
175
+
176
+ return status, logs
modules/restart.py CHANGED
@@ -13,24 +13,25 @@ def restart_private_space(repo: str):
13
  timeout=TIMEOUT,
14
  )
15
  response.raise_for_status()
 
16
 
17
 
18
  def self_restart():
19
  try:
20
  restart_private_space("kakamond/keep_spaces_alive")
21
-
22
  except Exception as e:
23
  send_email(f"Failed to self-restart: {e}")
24
 
25
 
 
26
  def test_restart(repo):
27
  status = "Success"
28
- url = None
29
  try:
30
- restart_private_space(repo)
31
- url = f"{HF_DOMAIN}/spaces/{repo}"
32
 
33
  except Exception as e:
34
  status = f"{e}"
35
 
36
- return status, url
 
13
  timeout=TIMEOUT,
14
  )
15
  response.raise_for_status()
16
+ return f"\n{response.text}\n"
17
 
18
 
19
  def self_restart():
20
  try:
21
  restart_private_space("kakamond/keep_spaces_alive")
 
22
  except Exception as e:
23
  send_email(f"Failed to self-restart: {e}")
24
 
25
 
26
+ # UI func
27
  def test_restart(repo):
28
  status = "Success"
29
+ logs = None
30
  try:
31
+ logs = restart_private_space(repo)
32
+ logs += f"\nSuccessfully restart {HF_DOMAIN}/spaces/{repo}\n"
33
 
34
  except Exception as e:
35
  status = f"{e}"
36
 
37
+ return status, logs
modules/smtp.py CHANGED
@@ -46,12 +46,15 @@ def email_api(
46
  )
47
 
48
 
 
49
  def send_email(content="Test SMTP"):
50
  status = "Success"
 
51
  try:
52
  status = email_api(content)
 
53
 
54
  except Exception as e:
55
  status = f"{e}"
56
 
57
- return status
 
46
  )
47
 
48
 
49
+ # UI func
50
  def send_email(content="Test SMTP"):
51
  status = "Success"
52
+ logs = None
53
  try:
54
  status = email_api(content)
55
+ logs = f"\nEmail content: {content}\n"
56
 
57
  except Exception as e:
58
  status = f"{e}"
59
 
60
+ return status, logs
utils.py CHANGED
@@ -6,11 +6,11 @@ API = os.getenv("api")
6
  EMAIL = os.getenv("email")
7
  SMTP = os.getenv("smtp")
8
  COOKIE = os.getenv("cookie")
9
- if not (PERIOD and USERS and API and EMAIL and SMTP and COOKIE):
10
- print("Please check the environment variables!")
11
- exit()
12
- else:
13
- PERIOD = int(PERIOD)
14
 
15
  TAG = os.getenv("target")
16
  if not TAG:
 
6
  EMAIL = os.getenv("email")
7
  SMTP = os.getenv("smtp")
8
  COOKIE = os.getenv("cookie")
9
+ # if not (PERIOD and USERS and API and EMAIL and SMTP and COOKIE):
10
+ # print("Please check the environment variables!")
11
+ # exit()
12
+ # else:
13
+ # PERIOD = int(PERIOD)
14
 
15
  TAG = os.getenv("target")
16
  if not TAG: