持续监测

main
阳光少年 1 year ago
parent 6119ce19c8
commit 36475d46c9

@ -7,7 +7,8 @@ import traceback
app = Flask(__name__) app = Flask(__name__)
USER_NAME = "yanguangshaonian" USER_NAME = "ubuntu"
CGROUP_PATH = "/sys/fs/cgroup/rocker"
ROCKER_PATH = f"/home/{USER_NAME}/rocker/target/debug/rocker" ROCKER_PATH = f"/home/{USER_NAME}/rocker/target/debug/rocker"
HANDLER_FILE = "handler.py" HANDLER_FILE = "handler.py"
HANDLER_CODE = "" HANDLER_CODE = ""
@ -20,7 +21,7 @@ def main():
code = request.json.get("code", "") code = request.json.get("code", "")
language = request.json.get("language", "") language = request.json.get("language", "")
_id = str(random.randint(8000_0000, 9000_0000)) _id = str(random.randint(8000_0000, 9000_0000))
resp = {"msg": "", code: "", "id": _id} resp = {"msg": "", "code": code, "id": _id, "rt": 0.0}
if len(code) > 1_0000: if len(code) > 1_0000:
resp["msg"] = "代码过长" resp["msg"] = "代码过长"
@ -34,6 +35,7 @@ def main():
with open(f"{user_path}/{HANDLER_FILE}", "w") as f: with open(f"{user_path}/{HANDLER_FILE}", "w") as f:
f.write(HANDLER_CODE) f.write(HANDLER_CODE)
starat = time.time()
try: try:
_ = subprocess.run(["sudo", ROCKER_PATH, _ = subprocess.run(["sudo", ROCKER_PATH,
"--id", _id, "--id", _id,
@ -46,7 +48,18 @@ def main():
resp["msg"] += f"{traceback.format_exc()}\n" resp["msg"] += f"{traceback.format_exc()}\n"
print(e) print(e)
time.sleep(3) # 20s 超时
procs_path = f"{CGROUP_PATH}/{_id}/cgroup.procs"
for _ in range(2000):
time.sleep(0.01)
try:
with open(procs_path) as f:
procs = [proc for proc in f.read().split("\n") if proc != ""]
if len(procs) == 0:
break
except Exception as e:
break
resp["rt"] = time.time() - starat
# 读取文件 # 读取文件
try: try:
@ -61,6 +74,7 @@ def main():
subprocess.run(["sudo", ROCKER_PATH, subprocess.run(["sudo", ROCKER_PATH,
"--rm", _id]) "--rm", _id])
subprocess.run(["sudo", "rm", "-rf", user_path]) subprocess.run(["sudo", "rm", "-rf", user_path])
return resp return resp
if __name__ == "__main__": if __name__ == "__main__":

Loading…
Cancel
Save