持续监测

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

@ -7,7 +7,8 @@ import traceback
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"
HANDLER_FILE = "handler.py"
HANDLER_CODE = ""
@ -20,7 +21,7 @@ def main():
code = request.json.get("code", "")
language = request.json.get("language", "")
_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:
resp["msg"] = "代码过长"
@ -34,6 +35,7 @@ def main():
with open(f"{user_path}/{HANDLER_FILE}", "w") as f:
f.write(HANDLER_CODE)
starat = time.time()
try:
_ = subprocess.run(["sudo", ROCKER_PATH,
"--id", _id,
@ -46,7 +48,18 @@ def main():
resp["msg"] += f"{traceback.format_exc()}\n"
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:
@ -61,6 +74,7 @@ def main():
subprocess.run(["sudo", ROCKER_PATH,
"--rm", _id])
subprocess.run(["sudo", "rm", "-rf", user_path])
return resp
if __name__ == "__main__":

Loading…
Cancel
Save