35 lines
746 B
Python
35 lines
746 B
Python
from fastapi import FastAPI
|
|
from pydantic import BaseModel
|
|
import subprocess
|
|
import tempfile
|
|
import sys
|
|
import os
|
|
|
|
app = FastAPI()
|
|
|
|
class CodeRequest(BaseModel):
|
|
code: str
|
|
|
|
@app.post("/execute")
|
|
def execute_code(req: CodeRequest):
|
|
with tempfile.NamedTemporaryFile(
|
|
suffix=".py", delete=False
|
|
) as f:
|
|
f.write(req.code.encode("utf-8"))
|
|
filename = f.name
|
|
|
|
try:
|
|
result = subprocess.run(
|
|
[sys.executable, filename],
|
|
capture_output=True,
|
|
text=True,
|
|
timeout=30
|
|
)
|
|
return {
|
|
"stdout": result.stdout,
|
|
"stderr": result.stderr,
|
|
"returncode": result.returncode
|
|
}
|
|
finally:
|
|
os.remove(filename)
|